stl vector的erase
时间: 2023-08-29 11:14:16 浏览: 43
vector的erase函数用于删除容器中的元素。它有两种用法:
1. 删除单个元素:可以通过指定要删除元素的迭代器位置来删除单个元素。例如,要删除vector中的第三个元素,可以使用以下代码:
```cpp
vector<int> vec = {1, 2, 3, 4, 5};
vec.erase(vec.begin() + 2); // 删除第三个元素
```
2. 删除指定范围的元素:可以通过指定要删除元素的起始和结束迭代器位置来删除一定范围内的元素。例如,要删除vector中的前三个元素,可以使用以下代码:
```cpp
vector<int> vec = {1, 2, 3, 4, 5};
vec.erase(vec.begin(), vec.begin() + 3); // 删除前三个元素
```
请注意,erase函数会在删除元素后将后续元素向前移动以填补空缺,因此在删除后迭代器会失效。如果需要继续遍历容器,请适当调整迭代器位置。
相关问题
vector erase
vector erase 是 C++ STL 中 vector 容器的一个成员函数,用于删除 vector 中的元素。它有两种形式:
1. iterator erase(iterator position);
这种形式接受一个迭代器参数 position,表示要删除的元素的位置。该函数返回一个迭代器,指向被删除元素的下一个元素。
例如:
```
std::vector<int> vec{1, 2, 3, 4, 5};
auto it = vec.erase(vec.begin() + 2);
// 删除第三个元素,即数字3
// vec 变成{1, 2, 4, 5}
// it 指向数字4
```
2. iterator erase(iterator first, iterator last);
这种形式接受两个迭代器参数 first 和 last,表示要删除元素的范围。该函数返回一个迭代器,指向被删除元素的下一个元素。
例如:
```
std::vector<int> vec{1, 2, 3, 4, 5};
auto it = vec.erase(vec.begin() + 1, vec.begin() + 4);
// 删除第二个到第四个元素,即数字2、3、4
// vec 变成{1, 5}
// it 指向数字5
```
注意:
- erase 函数会改变 vector 的大小,因此要注意迭代器的失效问题;
- 对于使用 erase 删除元素的操作,最好使用迭代器而不是下标,因为 erase 操作可能会导致迭代器失效,而下标则不会。
vector erase cpp
vector erase是一个C++ STL库中的成员函数,用于从vector容器中删除一个或几个元素。它接受一个迭代器作为参数,指定要删除的元素的位置。如果删除的是单个元素,则返回指向被删除元素之后一个元素的迭代器。如果删除的是多个元素,则返回指向最后一个被删除元素之后一个元素的迭代器。
vector erase函数有两种重载形式,一种接受一个迭代器作为参数,用于删除单个元素;另一种接受两个迭代器作为参数,用于删除一段元素。这种情况下,第一个参数指定删除范围的起始位置,第二个参数指定删除范围的结束位置。
需要注意的是,在删除元素后,vector容器的大小会相应地减小。如果使用了auto变量存储了被删除元素的迭代器,需要注意它可能已经失效了。如果使用一个无效的迭代器访问vector的元素,会导致不可预知的结果。
vector erase函数的时间复杂度为O(n),其中n是从被删除元素到vector的末尾所需移动的元素数。因此,在删除一个大的vector容器中的元素时,需要注意效率问题。