C++实现判断两个元素个数不同的vector, 如果vector1中的某个元素也在vector2中,那么将该元素从vector1中删除
时间: 2023-09-28 21:12:34 浏览: 186
可以按照以下思路实现:
1. 遍历 vector1,对于每一个元素,查看其是否在 vector2 中出现过。
2. 如果该元素也在 vector2 中出现过,则将该元素从 vector1 中删除。
3. 如果该元素没有在 vector2 中出现过,则继续遍历 vector1 中的下一个元素。
4. 最后,比较 vector1 和 vector2 的长度,如果不同则返回 true,否则返回 false。
以下是代码实现:
```c++
#include <iostream>
#include <vector>
#include <algorithm>
bool judge(std::vector<int>& vec1, std::vector<int>& vec2) {
for (auto it = vec1.begin(); it != vec1.end();) {
auto pos = std::find(vec2.begin(), vec2.end(), *it);
if (pos != vec2.end()) {
it = vec1.erase(it);
} else {
++it;
}
}
return vec1.size() != vec2.size();
}
int main() {
std::vector<int> vec1 = {1, 2, 3, 4, 5};
std::vector<int> vec2 = {6, 7, 8, 9, 10};
std::cout << "Before: vec1 size = " << vec1.size() << ", vec2 size = " << vec2.size() << std::endl;
judge(vec1, vec2);
std::cout << "After: vec1 size = " << vec1.size() << ", vec2 size = " << vec2.size() << std::endl;
return 0;
}
```
注意:在删除 vector1 中的元素时,需要使用 erase() 函数,并将返回值赋值给迭代器,以保证迭代器指向下一个元素。
阅读全文