c++ vector erase
时间: 2023-09-09 08:10:38 浏览: 115
在C++中,使用std::vector::erase()方法可以实际删除容器vector中的元素。 下面是一个示例代码,演示了如何使用erase()方法删除vector中的元素:
```cpp
#include <iostream>
#include <vector>
using namespace std;
#### 引用[.reference_title]
- *1* *2* *3* [c++ vector erase用法](https://blog.csdn.net/u013654125/article/details/77321081)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"]
[ .reference_list ]
相关问题
c++ vector erase
在 C++ 中,vector 是一个动态数组容器,可以使用 erase() 函数来删除其中的元素。erase() 函数有两种用法:
1. 删除单个元素:
```cpp
vector<int> nums = {1, 2, 3, 4, 5};
vector<int>::iterator it = nums.begin() + 2; // 指向要删除的元素的迭代器
nums.erase(it); // 删除索引位置为2的元素(即值为3的元素)
```
2. 删除一定范围的元素:
```cpp
vector<int> nums = {1, 2, 3, 4, 5};
vector<int>::iterator start = nums.begin() + 1; // 起始位置的迭代器
vector<int>::iterator end = nums.begin() + 3; // 结束位置的迭代器(不包含该位置的元素)
nums.erase(start, end); // 删除索引位置1到2的元素(即值为2和3的元素)
```
注意:在使用 erase() 函数后,原 vector 容器中的元素会被修改,后面的元素会向前移动来填补被删除的空位。
C++ VECTOR ERAse
`std::vector<T>::erase(iterator it)` 是C++标准库中的一个成员函数,它用于从 `std::vector` 对象中删除元素。
该函数接受一个迭代器作为参数,表示要删除元素的位置。如果找到了该位置,则会从 `std::vector` 中移除此元素,并将所有后续元素向前移动以填补空缺。请注意,由于元素被移动,因此在调用 `erase` 后对返回值进行引用可能会导致未定义的行为。因此,通常建议在 `erase` 调用结束后立即访问或处理修改后的容器。
此外,`erase` 函数有多个变体:
1. **单一元素删除**:当仅提供一个迭代器作为参数时,`std::vector::erase(it)` 将从当前位置删除元素。如果迭代器指向最后一个有效元素之后,则不会发生任何事情。
2. **区间删除**:可以指定两个迭代器作为参数,例如 `std::vector::erase(begin_it, end_it)`,这将删除从 `begin_it` 到 `end_it - 1` 区间内的所有元素。
3. **删除至特定位置**:还可以只提供结束迭代器而省略开始迭代器,如 `std::vector::erase(end_it)`,这等同于删除第一个迭代器所指的元素到向量末尾之间的所有元素。
使用 `erase` 函数可以有效地管理 `std::vector` 容器内的元素,尤其是在需要动态调整容器大小的情况下。
阅读全文