vector erase函数参数
时间: 2025-07-04 18:15:31 浏览: 2
### C++ 中 `std::vector` 的 `erase` 函数使用方式及参数含义
`std::vector` 是 C++ 标准库中用于动态数组管理的容器,其提供了 `erase` 成员函数用于删除一个或多个元素。该函数支持两种形式:一种用于删除单个元素,另一种用于删除一个范围内的元素。
#### 删除单个元素
`erase` 接受一个迭代器参数,表示要删除的元素位置:
```cpp
iterator erase(iterator position);
```
该函数会删除指定位置的元素,并返回指向被删除元素之后元素的迭代器。如果删除的是最后一个元素,则返回 `end()` 迭代器[^1]。
示例代码如下:
```cpp
#include <iostream>
#include <vector>
int main() {
std::vector<int> vec = {1, 2, 3, 4, 5};
auto it = vec.begin() + 2; // 指向第三个元素(值为3)
vec.erase(it); // 删除该元素
for (int val : vec) {
std::cout << val << " ";
}
}
```
输出结果为:
```
1 2 4 5
```
#### 删除一个范围内的元素
`erase` 还可以接受两个迭代器参数,表示要删除的元素区间 `[first, last)`:
```cpp
iterator erase(iterator first, iterator last);
```
此版本将删除从 `first` 开始(包括)到 `last` 结束(不包括)之间的所有元素,并返回指向被删除范围后一个元素的迭代器。若删除至末尾,则返回 `end()`。
示例代码如下:
```cpp
#include <iostream>
#include <vector>
int main() {
std::vector<int> vec = {1, 2, 3, 4, 5};
vec.erase(vec.begin() + 1, vec.begin() + 4); // 删除索引1到3的元素(值为2、3、4)
for (int val : vec) {
std::cout << val << " ";
}
}
```
输出结果为:
```
1 5
```
#### 注意事项
- 调用 `erase` 后,所有指向被删除元素及其之后元素的迭代器、指针和引用都将失效。
- `erase` 不会改变容器的容量(capacity),仅修改其大小(size)。
- 如果需要删除满足特定条件的多个元素,通常结合 `std::remove_if` 和 `erase` 使用,形成“erase-remove”惯用法:
```cpp
vec.erase(std::remove_if(vec.begin(), vec.end(), [](int x) {
return x % 2 == 0; // 删除所有偶数
}), vec.end());
```
上述方法利用 `std::remove_if` 将符合条件的元素移到容器末尾,并返回新的逻辑结尾,随后由 `erase` 实际删除这些元素。
---
阅读全文
相关推荐


















