全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

c++ vector删除元素 c++ vector erase用法

答案:vector的erase函数用于删除指定位置或范围元素,返回指向删除后下一元素的迭代器;可结合find删除特定值,推荐使用remove-erase惯用法删除满足条件的多个元素,注意迭代器失效与性能影响。

在C++中,vector 是一个动态数组容器,支持在运行时动态添加和删除元素。要删除 vector 中的元素,最常用的方法是使用 erase() 函数。下面详细介绍 erase 的用法以及一些常见操作。

erase() 基本语法

erase() 函数用于删除 vector 中指定位置或范围的元素,有以下两种主要形式:

  • iterator erase(iterator pos); —— 删除单个元素
  • iterator erase(iterator first, iterator last); —— 删除一个区间内的多个元素

函数返回值是一个迭代器,指向被删除元素之后的下一个元素。

删除单个元素

如果你想删除 vector 中某个特定位置的元素,比如第2个元素(索引为1),可以这样做:

vector vec = {10, 20, 30, 40};
vec.erase(vec.begin() + 1); // 删除索引为1的元素(即20)
// 现在 vec 内容为 {10, 30, 40}

删除一段范围的元素

你也可以删除从某个起始位置到结束位置之间的所有元素:

vector vec = {10, 20, 30, 40, 50};
vec.erase(vec.begin() + 1, vec.begin() + 4); // 删除 [1, 4) 范围内元素
// 即删除 20, 30, 40 → 结果为 {10, 50}

结合 find 删除指定值的元素

如果想删除某个具体值(例如删除所有等于30的元素),通常需要配合 std::find循环 + 条件判断 使用。但注意:find 只能找到第一个匹配项。

#include gorithm>
vector vec = {10, 20, 30, 40};
auto it = std::find(vec.begin(), vec.end(), 30);
if (it != vec.end()) {
  vec.erase(it); // 找到后删除
}
// vec 变为 {10, 20, 40}

删除所有满足条件的元素(推荐使用 remove-erase 惯用法)

如果你要删除多个相同值或满足某种条件的元素,直接用 erase 配合循环可能出错(因为迭代器失效)。推荐使用 remove-erase 惯用法

vec.erase(std::remove(vec.begin(), vec.end(), 30), vec.end());
// 删除所有等于30的元素

或者使用 lambda 表达式删除满足条件的元素:

vec.erase(
  std::remove_if(vec.begin(), vec.end(), [](int n) { return n > 30; }),
  vec.end()
);
// 删除所有大于30的元素

注意事项

  • erase 会改变 vector 大小,并使被删除位置之后的所有迭代器失效
  • 对空位置调用 erase 会导致未定义行为,使用前应确保迭代器有效
  • 频繁在中间删除元素效率较低(O(n)),因后续元素需前移;如需高频删改,考虑 list 或 deque
基本上就这些。掌握 erase 和 remove-erase 惯用法,就能高效处理 vector 元素删除问题。


# go  # c++  # if  # include  # auto  # int  # 循环  # Lambda  # 迭代  # 多个  # 推荐使用  # 是一个  # 第一个  # 就能  # 你要  # 两种  # 你想  # 下一 


相关文章: 实例解析Array和String方法  如何通过可视化优化提升建站效果?  标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?  公司网站设计制作厂家,怎么创建自己的一个网站?  如何快速搭建个人网站并优化SEO?  如何选择高效稳定的ISP建站解决方案?  Bpmn 2.0的XML文件怎么画流程图  Android滚轮选择时间控件使用详解  电脑免费海报制作网站推荐,招聘海报哪个网站多?  教程网站设计制作软件,怎么创建自己的一个网站?  浙江网站制作公司有哪些,浙江栢塑信息技术有限公司定制网站做的怎么样?  济南专业网站制作公司,济南信息工程学校怎么样?  枣阳网站制作,阳新火车站打的到仙岛湖多少钱?  建站之星×万网:智能建站系统+自助建站平台一键生成  建站之星2.7模板:企业网站建设与h5定制设计专题  如何在阿里云购买域名并搭建网站?  如何在阿里云虚拟服务器快速搭建网站?  如何挑选高效建站主机与优质域名?  如何通过VPS搭建网站快速盈利?  微信网站制作公司有哪些,民生银行办理公司开户怎么在微信网页上查询进度?  C++如何使用std::optional?(处理可选值)  微信h5制作网站有哪些,免费微信H5页面制作工具?  如何通过建站之星自助学习解决操作问题?  如何撰写建站申请书?关键要点有哪些?  如何快速查询域名建站关键信息?  C#怎么创建控制台应用 C# Console App项目创建方法  如何通过虚拟机搭建网站?详细步骤解析  如何在阿里云虚拟主机上快速搭建个人网站?  定制建站是什么?如何实现个性化需求?  建站168自助建站系统:快速模板定制与SEO优化指南  武清网站制作公司,天津武清个人营业执照注销查询系统网站?  微信小程序制作网站有哪些,微信小程序需要做网站吗?  家具网站制作软件,家具厂怎么跑业务?  html制作网站的步骤有哪些,iapp如何添加网页?  香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南  代购小票制作网站有哪些,购物小票的简要说明?  怎么将XML数据可视化 D3.js加载XML  如何在建站主机中优化服务器配置?  教学网站制作软件,学习*后期制作的网站有哪些?  在线流程图制作网站手机版,谁能推荐几个好的CG原画资源网站么?  如何正确选择百度移动适配建站域名?  IOS倒计时设置UIButton标题title的抖动问题  网站插件制作软件免费下载,网页视频怎么下到本地插件?  阿里云高弹*务器配置方案|支持分布式架构与多节点部署  建站主机如何选?性能与价格怎样平衡?  手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?  韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐  如何在建站之星网店版论坛获取技术支持?  如何设计高效校园网站?  如何通过西部建站助手安装IIS服务器? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。