vector的erase用法
时间: 2023-10-12 11:06:18 浏览: 300
vector的erase函数用于从向量中删除指定位置的元素或指定范围的元素。它有两种常见的用法:
1. 删除单个元素:
```cpp
vector<int> vec = {1, 2, 3, 4, 5};
vec.erase(vec.begin() + index);
```
这里的`index`是要删除的元素在向量中的下标位置。通过`vec.begin() + index`可以获取到该元素的迭代器,然后传递给`erase`函数进行删除。
2. 删除指定范围内的元素:
```cpp
vector<int> vec = {1, 2, 3, 4, 5};
vec.erase(vec.begin() + start, vec.begin() + end);
```
这里的`start`和`end`分别是要删除的范围的起始位置和结束位置(不包括结束位置)。通过迭代器指定范围后,传递给`erase`函数即可删除这个范围内的元素。
需要注意的是,在调用`erase`函数后,被删除元素之后的所有元素都会向前移动,导致迭代器、引用和指针失效。因此,在使用迭代器访问元素时要特别小心,确保不会越界或访问无效的位置。
相关问题
vector erase用法
vector::erase() 是 C++ 中 std::vector 的成员函数,用于从 vector 中删除一个或多个元素。它有几种不同的用法:
1. 删除单个元素:
```cpp
iterator erase(iterator position);
```
这个函数接受一个迭代器参数 position,表示要删除的元素的位置。它返回一个指向被删除元素之后位置的迭代器。
例如:
```cpp
std::vector<int> nums = {1, 2, 3, 4, 5};
nums.erase(nums.begin() + 2); // 删除第三个元素
// 现在 nums = {1, 2, 4, 5}
```
2. 删除一个范围内的元素:
```cpp
iterator erase(iterator first, iterator last);
```
这个函数接受两个迭代器参数,表示要删除的范围 [first, last)。它返回一个指向被删除元素之后位置的迭代器。
例如:
```cpp
std::vector<int> nums = {1, 2, 3, 4, 5};
nums.erase(nums.begin() + 1, nums.begin() + 4); // 删除第二到第四个元素
// 现在 nums = {1, 5}
```
需要注意的是,erase() 函数会使得迭代器失效,因此在使用 erase() 后要小心处理迭代器的使用。
c++ vector erase用法大全
C++中的vector容器提供了erase()方法来删除元素。下面是一些c++ vector erase用法的示例:
1. 删除指定位置的元素[^1]:
```cpp
std::vector<int> vec = {1, 2, 3, 4, 5};
vec.erase(vec.begin() + 2); // 删除索引为2的元素
```
2. 删除指定范围的元素:
```cpp
std::vector<int> vec = {1, 2, 3, 4, 5};
vec.erase(vec.begin() + 1, vec.begin() + 4); // 删除索引为1到3的元素
```
3. 删除满足条件的元素[^2]:
```cpp
std::vector<int> vec = {1, 2, 3, 4, 5};
vec.erase(std::remove(vec.begin(), vec.end(), 3), vec.end()); // 删除所有值为3的元素
```
4. 删除满足条件的元素并返回删除的元素个数:
```cpp
std::vector<int> vec = {1, 2, 3, 4, 5};
int count = std::count(vec.begin(), vec.end(), 3);
vec.erase(std::remove(vec.begin(), vec.end(), 3), vec.end()); // 删除所有值为3的元素
```
这些是一些常见的c++ vector erase用法。你可以根据具体的需求选择适合的方法来删除vector中的元素。