vector容器erase
时间: 2023-08-25 13:05:20 浏览: 179
vector容器的erase函数用于删除容器中的元素。它有两种使用方式:
1. erase(iterator _First, iterator _Last):删除从_First开始到_Last位置的元素,并返回一个迭代器,指向最后一个删除元素的下一个位置。可以通过这个返回的迭代器来继续进行后续操作。
2. erase(iterator position):删除指定位置的元素,并返回一个迭代器,指向被删除元素的下一个位置。
在使用erase函数删除指定元素的过程中,需要注意迭代器的失效问题。当调用erase函数删除元素后,被删除元素的迭代器会失效,因此需要将erase的返回值赋给迭代器,以保持迭代器的有效性。可以使用循环和条件判断结合的方式,通过判断元素的值来决定是否删除元素,并更新迭代器。
以下是几种使用erase函数删除vector容器元素的示例:
1. 使用迭代器进行删除:
```cpp
vector<int> count = {0, 1, 2, 2, 2, 2, 2, 3, 4};
for(auto iter = count.begin(); iter != count.end(); ) {
if(2 == *iter) {
iter = count.erase(iter);
} else {
++iter;
}
}
```
2. 使用erase和find函数结合进行删除:
```cpp
vector<int> vec = {0, 1, 2, 2, 2, 2, 2, 3, 4};
vector<int> temp;
for(auto iter = vec.begin(); iter != vec.end(); ) {
auto iter1 = find(vec.begin(), iter, *iter);
if(iter == iter1) {
temp.push_back(*iter);
}
++iter;
}
```
这两种方式都可以删除vector容器中指定的元素。使用erase函数时,需要根据具体的需求选择合适的方式进行操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *3* [vector中erase删除元素用法及注意事项](https://blog.csdn.net/u013171226/article/details/118762113)[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* [【C++】vector中erase用法](https://blog.csdn.net/Vcrossover/article/details/106243627)[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 ]
阅读全文