C++中vector删除指定位置的元素

本文介绍如何使用C++ STL中的vector容器的erase方法来删除指定位置的元素,并通过示例展示了erase方法的基本用法及其对容器大小的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >



1、可以用erase方法删除vector指定位置的元素。

2、例程:
#include <vector>
#include <iostream>
using namespace std;
int main(int argc, char** argv){
    std::vector<int> vec;
    for(int i=0;i<100;i++)    vec.push_back(i);
    printf("10:%d\n",vec[10]);
    printf("size:%d\n",vec.size());
    printf("**********************************\n");
    std::vector<int>::iterator it = vec.begin()+10;
    vec.erase(it);
    printf("10:%d\n",vec[10]);
    printf("size:%d\n",vec.size());
    return 0;
}

### C++ 中 `vector` 删除指定位置元素的方法 在 C++ 的标准模板库(STL)中,`std::vector` 提供了一个名为 `erase()` 的成员函数来删除指定位置元素。以下是几种常见的方法及其具体实现: #### 使用 `erase()` 函数删除单个元素 可以通过传递一个迭代器给 `erase()` 来删除某个特定位置上的元素。例如,假设有一个整数类型的 `vector` 并希望删除索引为 2 处的元素,则可以这样操作[^2]: ```cpp #include <iostream> #include <vector> using namespace std; int main() { vector<int> v = {1, 2, 3, 4, 5}; // 删除第3个位置元素(索引从0开始) v.erase(v.begin() + 2); for (auto elem : v) { cout << elem << " "; } } ``` 运行结果将是:`1 2 4 5` --- #### 使用 `erase()` 函数删除一段连续的元素 如果需要删除某一范围内的一组连续元素,也可以通过提供两个迭代器作为参数调用 `erase()` 函数。这两个迭代器定义了待删除区间的起始和结束位置(不包括结束位置)。下面的例子展示了如何删除索引 `[0, 2)` 范围内的所有元素[^3]: ```cpp #include <iostream> #include <vector> using namespace std; int main() { vector<int> vec = {1, 2, 3, 4, 5}; // 移除索引 [0, 2) 范围内的元素 vec.erase(vec.begin(), vec.begin() + 2); for (auto num : vec) { cout << num << " "; } return 0; } ``` 执行此程序会得到如下输出:`3 4 5` --- #### 结合 `swap()` 和 `pop_back()` 实现高效删除 当不需要保持原有顺序时,还可以采用更高效的策略——先将目标元素与最后一位互换再调用 `pop_back()` 进行移除。这种方法避免了大量数据移动带来的性能开销[^5]。 示例代码如下所示: ```cpp #include <vector> #include <iostream> #include <algorithm> using namespace std; int main(){ vector<int> demo{1, 2, 3, 4, 5}; // 将欲删掉的元素替换到最后面去 swap(*(demo.begin()+1), *(demo.end()-1)); // 输出交换之后的状态 for(auto item:demo){ cout<<item<<" "; } cout<<"\n"; // 执行实际意义上的弹栈动作完成最终清除工作 demo.pop_back(); // 展示当前大小以及容量情况 cout<<"Size:"<<demo.size()<<", Capacity:"<<demo.capacity()<<"\n"; // 显示剩下的内容部分 for(auto item:demo){ cout<<item<<" "; } return 0; } ``` 以上脚本打印出来的信息应该类似于这样的形式: ``` 1 5 3 4 2 Size:4, Capacity:8 1 5 3 4 ``` --- ### 总结 综上所述,在C++编程语言里针对Vector容器中的某些特殊定位项目实施消除作业存在多种途径可供选取应用;无论是利用专门设计好的Erase接口还是借助Swap配合Pop_Back组合拳均能达成预期效果只是侧重点各有不同而已。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值