c++ stl删除元素
时间: 2023-09-25 18:14:54 浏览: 101
删除数组中的元素
在STL中,可以使用erase函数来删除容器中的元素。方法一是递增当前迭代器,然后使用erase函数删除元素,最后在循环中更新迭代器。例如,对于一个vector<int>容器c,可以使用以下代码删除其中的元素:
```
for (vector<int>::iterator it = c.begin(); it != c.end();) {
if (*it) {
it = c.erase(it);
} else {
++it;
}
}
```
方法二是使用erase函数删除元素后,直接将返回的下一个有效迭代器赋给当前迭代器,从而更新迭代器。例如,对于一个容器cont和一个自定义的shouldDelete函数,可以使用以下代码删除其中的元素:
```
for (iter = cont.begin(); iter != cont.end();) {
(*it)->doSomething();
if (shouldDelete(*iter)) {
iter = cont.erase(iter);
} else {
++iter;
}
}
```
需要注意的是,在使用erase函数删除元素后,返回的迭代器已经指向了下一个有效元素,因此不需要再进行自增操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* [C++:STL容器迭代过程中删除元素技巧(转)](https://blog.csdn.net/Cold_Sun_/article/details/102576325)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"]
- *2* *3* [C++ STL容器元素正确删除](https://blog.csdn.net/kenjianqi1647/article/details/120062046)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
阅读全文