vector的erase函数使用例子
vector的erase函数用于删除vector中的元素。它有两种常用的使用方式:
删除单个元素:
vector<int> nums = {1, 2, 3, 4, 5}; nums.erase(nums.begin() + 2); // 删除索引为2的元素,即删除数字3
在这个例子中,我们使用
erase
函数删除了索引为2的元素,即数字3。此时,nums
变为{1, 2, 4, 5}。删除一定范围内的元素:
vector<int> nums = {1, 2, 3, 4, 5}; nums.erase(nums.begin() + 1, nums.begin() + 4); // 删除索引为1到3的元素,即删除数字2、3、4
在这个例子中,我们使用
erase
函数删除了索引为1到3的元素,即数字2、3、4。此时,nums
变为{1, 5}。
需要注意的是,使用erase
函数后,被删除元素之后的所有元素会向前移动,所以索引也会相应地改变。
C++ vector erase函数 详解
C++ STL Vector Erase 函数详解
功能描述
std::vector::erase
是用于从向量中移除指定位置或范围内的元素的成员函数。此操作会使得被删除元素之后的所有元素向前移动,以填补留下的空白。
参数说明
该方法接受两种形式的参数:
- 单个迭代器
iterator pos
: 移除由给定迭代器指向的位置处的一个元素。 - 迭代器对
[first, last)
: 删除从第一个到(不包括)最后一个之间的所有元素。
对于这两种情况,返回值都是指向原来最后一位已删去元素后面那个新位置上的下一个元素的迭代器。
复杂度分析
当调用带有单个迭代器版本时,时间复杂度为线性的 O(N),其中 N 表示要复制/移动的数据项数量;而使用两个迭代器作为输入的情况下,则取决于实际执行了多少次赋值操作来覆盖掉待清除部分后的剩余序列长度[^1]。
使用示例
下面给出一段简单的代码片段展示如何利用 erase 方法去除特定索引处以及区间内多个连续项目的实例:
#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.
}
vector中erase函数
在C++中,std::vector
的erase
函数用于从向量中删除一个或多个元素。erase
函数有两种常见的用法:
删除单个元素:
std::vector<T>::iterator it = vec.begin(); // 获取要删除的元素的迭代器 vec.erase(it); // 删除指定位置的元素
删除一个区间范围的元素:
std::vector<T>::iterator first = vec.begin(); // 获取要删除的区间起始位置的迭代器 std::vector<T>::iterator last = vec.end(); // 获取要删除的区间结束位置的迭代器 vec.erase(first, last); // 删除指定区间范围内的元素
请注意,erase
函数会改变容器的大小,并且后续的元素会向前移动以填补被删除的空缺。因此,在使用迭代器删除元素之后,需要小心处理迭代器的有效性。
如果你有特定的问题或者需要更详细的例子,请提供更多的上下文或代码,我将很乐意给出更具体的帮助。
相关推荐
















