vector的erase函数 详解
时间: 2023-10-21 07:22:20 浏览: 151
vector的erase函数用于删除vector中指定位置的元素或者指定范围内的元素。它有两种常用的用法:
1. 删除单个元素:
```cpp
iterator erase (const_iterator position);
```
这个函数接受一个迭代器作为参数,表示要删除的元素的位置。它会返回一个迭代器,指向被删除元素的后一个位置。例如:
```cpp
std::vector<int> vec = {1, 2, 3, 4, 5};
vec.erase(vec.begin() + 2); // 删除第3个元素
```
此时,vec将变为{1, 2, 4, 5}。
2. 删除指定范围内的元素:
```cpp
iterator erase (const_iterator first, const_iterator last);
```
这个函数接受两个迭代器作为参数,表示要删除的元素范围。它会返回一个迭代器,指向被删除范围的后一个位置。例如:
```cpp
std::vector<int> vec = {1, 2, 3, 4, 5};
vec.erase(vec.begin() + 1, vec.begin() + 4); // 删除第2个到第4个元素
```
此时,vec将变为{1, 5}。
需要注意的是,当删除元素后,之后的元素会自动向前移动填补被删除元素的空位,而且迭代器会失效,需要重新获取。此外,vector的erase操作的时间复杂度是O(n),其中n是vector中的元素个数。所以,如果需要频繁地删除元素,可能会影响性能,可以考虑使用其他数据结构。
阅读全文