C++如何从一个数组中删除另一个数组中存在的元素
时间: 2024-09-28 20:08:15 浏览: 21
在C++中,可以从一个数组中删除另一个数组中存在的元素,通常有两种方法:
1. **使用STL算法** - 如果你使用C++11及以上版本,可以使用`std::remove_copy_if()`函数结合`std::unique()`。首先复制第一个数组到一个新的数组,然后过滤掉第二个数组中存在的元素,最后删除重复项。
```cpp
#include <algorithm>
#include <vector>
std::vector<int> first_array = {1, 2, 3, 4, 5};
std::vector<int> second_array = {3, 4};
// 创建一个临时容器存放不重复的元素
std::vector<int> temp;
temp.reserve(first_array.size());
// 使用 remove_copy_if 和 unique
temp.insert(temp.end(), first_array.begin(), first_array.end());
temp.erase(std::remove(temp.begin(), temp.end(), second_array.front()), temp.end());
for (int value : second_array) {
temp.erase(std::remove(temp.begin(), temp.end(), value), temp.end());
}
first_array.swap(temp); // 现在first_array中就没有second_array中的元素了
```
2. **手动遍历并删除** - 也可以选择逐个遍历第一个数组,如果遇到第二个数组中的元素,就跳过。这种方法更直接但效率较低。
```cpp
for (int i = 0; i < first_array.size(); ) {
if (std::find(second_array.begin(), second_array.end(), first_array[i]) != second_array.end()) {
first_array.erase(first_array.begin() + i);
} else {
++i;
}
}
```