stl vector的erase
时间: 2023-08-29 12:14:16 浏览: 105
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函数会在删除元素后将后续元素向前移动以填补空缺,因此在删除后迭代器会失效。如果需要继续遍历容器,请适当调整迭代器位置。
相关问题
STL vector
向量vector是STL模板中的动态数组,可以在运行时动态地增加或减少元素。以下是向量vector的常见操作:
1. 创建向量:可以使用默认构造函数创建一个空的向量,也可以使用带有初始元素个数和初始值的构造函数创建一个向量。
2. 插入元素:可以使用push_back()函数在向量的末尾插入一个元素,也可以使用insert()函数在指定位置插入一个元素。
3. 删除元素:可以使用pop_back()函数删除向量的末尾元素,也可以使用erase()函数删除指定位置的元素。
4. 访问元素:可以使用下标运算符[]或at()函数访问向量中的元素。
5. 修改元素:可以使用下标运算符[]或at()函数修改向量中的元素。
6. 获取向量大小:可以使用size()函数获取向量中元素的个数。
7. 清空向量:可以使用clear()函数清空向量中的所有元素。
8. 判断向量是否为空:可以使用empty()函数判断向量是否为空。
9. 复制向量:可以使用赋值运算符=或assign()函数将一个向量复制给另一个向量。
10. 交换向量:可以使用swap()函数交换两个向量的元素。
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 操作可能会导致迭代器失效,而下标则不会。
阅读全文