vector.erase
时间: 2023-07-23 19:28:16 浏览: 153
`vector.erase()` 是 C++ STL 中的一个函数,用于从 vector 中删除一个或多个元素。它有两种不同的用法:
1. 删除单个元素:`vector.erase(iterator position)`,其中 `position` 是一个指向要删除元素的迭代器。
例如,如果有一个 `vector<int> v`,要删除第三个元素,则可以使用以下代码:
```c++
vector<int>::iterator it = v.begin() + 2; // 获取第三个元素的迭代器
v.erase(it); // 删除第三个元素
```
2. 删除一段区间内的多个元素:`vector.erase(iterator first, iterator last)`,其中 `first` 和 `last` 是指向要删除元素的起始和结束位置的迭代器,区间是左闭右开的。
例如,如果有一个 `vector<int> v`,要删除第 2 到第 5 个元素,则可以使用以下代码:
```c++
vector<int>::iterator first = v.begin() + 1; // 获取第 2 个元素的迭代器
vector<int>::iterator last = v.begin() + 5; // 获取第 5 个元素的后一个位置的迭代器
v.erase(first, last); // 删除第 2 到第 5 个元素
```
需要注意的是,`vector.erase()` 在删除元素后会导致原有的迭代器失效,因此在删除元素后,如果需要继续遍历 vector,则需要重新获取迭代器或者使用索引来访问元素。
阅读全文