c++对vector容器进行边遍历边删除的安全迭代器例子
时间: 2023-12-23 09:04:44 浏览: 73
在C++中,对于vector容器的遍历和删除操作,需要使用安全迭代器来确保程序的正确性。安全迭代器的使用可以避免在遍历过程中对容器的修改操作引起的未定义行为。
以下是一个对vector容器进行边遍历边删除的安全迭代器例子,代码如下:
```cpp
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<int> vec = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
for (auto it = vec.begin(); it != vec.end(); ) {
if (*it % 2 == 0) {
it = vec.erase(it); // 安全删除
} else {
cout << *it << " "; // 输出奇数元素
++it;
}
}
return 0;
}
```
在上面的例子中,我们使用了for循环来遍历vector容器,使用auto类型推导得到迭代器类型,然后在循环体内部,判断当前元素是否为偶数,如果是偶数,则使用安全删除函数erase()将其从容器中删除,否则输出奇数元素并将迭代器指向下一个元素。
需要注意的是,安全删除函数erase()返回的是下一个元素的迭代器,因此在执行erase()操作之后,需要将迭代器更新为erase()的返回值,以便继续遍历容器中的元素。
阅读全文