vector erase的用法
时间: 2023-10-23 10:46:21 浏览: 123
好的,关于 vector erase 的用法,它可以用于删除 vector 容器中的一个或多个元素,其函数原型如下:
iterator erase (iterator position);
iterator erase (iterator first, iterator last);
第一个函数用于删除指定位置的元素,第二个函数用于删除指定范围内的所有元素。需要注意的是,删除操作后,原来的迭代器可能已经失效,因此需要重新获取迭代器才能继续访问容器中的元素。同时,删除元素并不会改变容器的大小,需要通过调用 resize() 函数来改变大小。希望能解答您的疑问,谢谢!
相关问题
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++ 中,`std::vector` 提供了 `erase` 函数用于删除指定位置的元素。这个函数有两个版本:
1. `erase(iterator)`:接受一个迭代器作为参数,指向要删除的第一个元素。它会返回一个新的迭代器,表示删除元素后的下一个元素的位置。
```cpp
std::vector<int> v = {1, 2, 3, 4, 5};
auto it = v.erase(v.begin() + 2); // 删除第三个元素(索引从0开始)
```
在这个例子中,`it` 现在指向了被删除元素之后的新元素,即 `4`。
2. `erase(first, last)`:接受两个迭代器作为参数,分别指向要删除范围的起始元素和终止元素(但不包括终止元素)。它会删除指定范围内的所有元素,并返回新的结束迭代器。
```cpp
std::vector<int> v = {1, 2, 3, 4, 5};
v.erase(v.begin() + 1, v.begin() + 4); // 删除第2到第4个元素(即2, 3, 4)
```
这将删除 `[2, 3, 4)` 这个区间的所有元素。
注意,`erase` 要求提供合法的迭代器,如果尝试删除超出范围的元素,或者直接传入已失效的迭代器,可能会导致未定义的行为。另外,`erase` 后的剩余元素会被移动到空出的空间,这可能会影响向量的内存布局。
阅读全文