C++在不使用迭代器的前提下,遍历两个元素个数不一样的vector,并且删除两个vector都存在的元素
时间: 2024-02-17 20:01:37 浏览: 81
浅谈c++ vector和map的遍历和删除对象
可以使用下标操作符 `[]` 和 vector 的成员函数 `erase()` 来完成该操作。具体方法如下:
1. 定义两个 vector,假设分别为 `vec1` 和 `vec2`。
2. 定义两个变量 `i` 和 `j`,分别表示遍历 `vec1` 和 `vec2` 的下标。
3. 从前往后遍历 `vec1` 和 `vec2`,当发现两个元素相等时,删除它们,并将 `vec1` 和 `vec2` 的下标分别加一。如果两个元素不相等,将较小的元素所在 vector 的下标加一。
4. 当其中一个 vector 的下标超出其范围时,结束遍历。
具体代码如下:
```c++
vector<int> vec1 = {1, 2, 3, 4};
vector<int> vec2 = {2, 3, 5};
int i = 0, j = 0;
while (i < vec1.size() && j < vec2.size()) {
if (vec1[i] == vec2[j]) {
vec1.erase(vec1.begin() + i);
vec2.erase(vec2.begin() + j);
} else if (vec1[i] < vec2[j]) {
i++;
} else {
j++;
}
}
```
注意,由于删除元素时 vector 的大小会改变,因此不能使用 range-based for 循环或者迭代器进行遍历。
阅读全文