迭代器删除list元素
时间: 2023-08-15 14:05:54 浏览: 100
基于list循环删除元素,迭代器失效的问题详解
在使用迭代器删除list元素时需要注意以下几点:
1. 不能在循环中直接删除元素,因为删除元素后会改变list的大小,可能会导致迭代器指向错误的位置,从而导致程序崩溃。
2. 删除元素后,迭代器会失效,需要重新获取迭代器。
下面是一个示例代码,演示如何使用迭代器删除list元素:
```c++
#include <iostream>
#include <list>
int main() {
std::list<int> myList = {1, 2, 3, 4, 5};
// 获取迭代器
auto it = myList.begin();
// 循环遍历list
while (it != myList.end()) {
// 删除元素
if (*it == 3) {
it = myList.erase(it);
} else {
++it;
}
}
// 输出剩余的元素
for (auto it = myList.begin(); it != myList.end(); ++it) {
std::cout << *it << " ";
}
return 0;
}
```
在上面的代码中,我们先获取list的迭代器,然后使用while循环遍历list,如果当前元素等于3,则使用erase函数删除元素,并将迭代器指向删除元素后的下一个元素;否则,将迭代器指向下一个元素。最后,使用for循环输出剩余的元素。
阅读全文