C++ vector erase函数返回值
时间: 2023-09-30 14:09:12 浏览: 225
C++ 的 `std::vector` 类中的 `erase` 函数返回一个迭代器,指向被删除元素之后的位置。这意味着,如果你想要删除一个元素并获取删除后的新位置,可以使用 `erase` 函数的返回值。如果删除的是最后一个元素,`erase` 函数将返回指向容器末尾的迭代器。如果没有删除任何元素,`erase` 函数将返回指向被删除元素之后的位置的迭代器,也就是该元素的下一个位置。
相关问题
c++ vector容器中erase函数返回值
在C++中,`std::vector`容器的`erase`函数用于删除指定位置的元素并返回两个指针,这两个指针实际上是新序列的开始和结束。如果成功删除了一个元素,这个函数会返回指向新删除元素后的位置的迭代器;如果没有删除任何元素(比如尝试删除未找到的元素),它将返回指向被删除元素前的位置。
```cpp
size_type erase(const_iterator pos);
```
这里的`const_iterator`是一个常量迭代器,表示删除操作不会改变容器的内容,而`size_type`通常是`std::vector`中的`size_t`类型。`erase(pos)`会删除从`pos`开始到`end()`之间的所有元素。
C++ vector erase函数 详解
### C++ STL Vector Erase 函数详解
#### 功能描述
`std::vector::erase` 是用于从向量中移除指定位置或范围内的元素的成员函数。此操作会使得被删除元素之后的所有元素向前移动,以填补留下的空白。
#### 参数说明
该方法接受两种形式的参数:
- 单个迭代器 `iterator pos`: 移除由给定迭代器指向的位置处的一个元素。
- 迭代器对 `[first, last)` : 删除从第一个到(不包括)最后一个之间的所有元素。
对于这两种情况,返回值都是指向原来最后一位已删去元素后面那个新位置上的下一个元素的迭代器。
#### 复杂度分析
当调用带有单个迭代器版本时,时间复杂度为线性的 O(N),其中 N 表示要复制/移动的数据项数量;而使用两个迭代器作为输入的情况下,则取决于实际执行了多少次赋值操作来覆盖掉待清除部分后的剩余序列长度[^1]。
#### 使用示例
下面给出一段简单的代码片段展示如何利用 erase 方法去除特定索引处以及区间内多个连续项目的实例:
```cpp
#include <iostream>
#include <vector>
int main() {
std::vector<int> vec = {0, 1, 2, 3, 4};
// Remove single element at index 2.
auto it = vec.erase(vec.begin() + 2);
// Now 'it' points to what was originally the third element before erasing.
for(auto& elem : vec){
std::cout << elem << " ";
}
std::cout << "\n";
// Output should be: 0 1 3 4
// Removing elements from position 1 up until but not including end().
vec.erase(vec.begin()+1 ,vec.end());
for(auto& elem : vec){
std::cout << elem << " ";
}
// Final output is just first element which remains after all deletions.
}
```
阅读全文
相关推荐













