vector 的erase用法
时间: 2023-10-15 15:28:06 浏览: 166
vector的erase函数用于从向量中删除一个或多个元素。它有两种用法:
1. erase(position):用于删除指定位置的元素。它接受一个迭代器作为参数,指向要删除的元素的位置。删除后,该位置之后的所有元素会向前移动,向量的大小会减小。
2. erase(first, last):用于删除指定范围内的元素。它接受两个迭代器作为参数,分别指向要删除的范围的起始位置和结束位置的下一个位置。删除后,该范围内的所有元素会被移除,向量的大小会相应减小。
关于erase函数的注意事项,可以参考引用和引用的博客链接,它们提供了更详细的讲解和示例代码。
另外,根据引用中的描述,erase函数删除元素后,原来的迭代器并不会成为野指针,而是指向被删除元素的下一个元素位置。所以,如果不将erase函数的返回值赋给迭代器,继续使用已经失效的迭代器也是可以完成任务的。
以下是一个使用erase函数删除vector中特定元素的示例代码:
```cpp
vector<int> count = {0, 1, 2, 2, 2, 2, 2, 3, 4};
for (auto iter = count.begin(); iter != count.end(); ) {
if (*iter == 2) {
iter = count.erase(iter); // 删除元素,并将返回的迭代器赋给iter
} else {
++iter; // 继续遍历
}
}
for (const auto& v : count) {
cout << v << ",";
}
cout << endl;
```
以上代码中,遍历vector中的元素,如果元素为2,则使用erase函数删除该元素,并将返回的迭代器赋给iter。如果元素不为2,则继续遍历。最后,输出删除元素后的vector内容。
希望这个解答对您有帮助。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* *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^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"]
[ .reference_list ]
阅读全文