vector中的erase方法
时间: 2023-11-21 22:50:41 浏览: 36
vector中的erase方法可以用来删除vector中的元素,有两种用法:
1. erase(iterator position):删除指定位置的元素,返回指向被删除元素之后元素的迭代器。
2. erase(iterator first, iterator last):删除[first, last)区间内的元素,返回指向被删除元素之后元素的迭代器。
需要注意的是,使用erase方法后,原来的迭代器都会失效,需要重新获取。
示例代码:
```
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<int> v = {1, 2, 3, 4, 5};
auto it = v.begin() + 2;
v.erase(it); // 删除第三个元素
for (auto i : v) {
cout << i << " "; // 输出:1 2 4 5
}
cout << endl;
v.erase(v.begin() + 1, v.end() - 1); // 删除第二个到倒数第二个元素
for (auto i : v) {
cout << i << " "; // 输出:1 5
}
cout << endl;
return 0;
}
```
相关问题
vector 中erase
在使用C++中的vector时,erase函数用于从vector中删除指定元素。引用[2]给出了一个使用迭代器的示例,它遍历vector并在满足条件的情况下删除元素。然而,这个示例存在一个问题,即在删除元素后,迭代器指向的位置会失效,导致程序出错。为了解决这个问题,需要在删除元素后更新迭代器的位置。引用提供了一个修正后的示例,使用erase函数删除元素后,将迭代器指向删除元素后的下一个位置。这样可以确保迭代器仍然指向有效的元素。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* [【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^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"]
- *2* *3* [vector的erase()](https://blog.csdn.net/try_again_later/article/details/88964976)[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: 50%"]
[ .reference_list ]
vector中erase函数
在C++中,`std::vector`的`erase`函数用于从向量中删除一个或多个元素。`erase`函数有两种常见的用法:
1. 删除单个元素:
```cpp
std::vector<T>::iterator it = vec.begin(); // 获取要删除的元素的迭代器
vec.erase(it); // 删除指定位置的元素
```
2. 删除一个区间范围的元素:
```cpp
std::vector<T>::iterator first = vec.begin(); // 获取要删除的区间起始位置的迭代器
std::vector<T>::iterator last = vec.end(); // 获取要删除的区间结束位置的迭代器
vec.erase(first, last); // 删除指定区间范围内的元素
```
请注意,`erase`函数会改变容器的大小,并且后续的元素会向前移动以填补被删除的空缺。因此,在使用迭代器删除元素之后,需要小心处理迭代器的有效性。
如果你有特定的问题或者需要更详细的例子,请提供更多的上下文或代码,我将很乐意给出更具体的帮助。