vector 的删除元素方法
时间: 2024-12-23 17:20:14 浏览: 12
在C++标准库中的`std::vector`容器中,删除元素有两种常见方法:
1. **erase()** 和 **pop_back()**: `erase()` 方法用于移除指定位置的元素,可以接受一个迭代器作为参数,指向要删除的位置。例如,如果你想删除索引为i的元素,你可以这样做:
```cpp
std::vector<int> vec = {1, 2, 3, 4, 5};
vec.erase(vec.begin() + i); // 使用迭代器
```
如果你想删除最后一个元素,可以直接使用 `pop_back()` 函数:
```cpp
vec.pop_back(); // 删除最后一个元素
```
2. **remove() and resize()**: 如果你知道要删除的元素值而不是它的位置,可以先调用 `std::remove()` 来移动所有大于该值的元素到向后的位置,然后通过调整容量减少实际大小:
```cpp
std::vector<int> vec = {1, 2, 3, 4, 4, 5};
vec.erase(std::remove(vec.begin(), vec.end(), 4), vec.end()); // 移除所有4
```
接着用新的长度减去旧的开始地址得到新结束地址,再传递给 `resize()` 函数:
```cpp
vec.resize(vec.end() - vec.begin());
```
注意,`erase()`、`remove()` 等操作会改变原容器的大小,并返回一个新的终止迭代器。
阅读全文