当前位置: 首页 > news >正文

vector中如何按条件删除元素

按条件删除最容易想到的方法是用迭代器遍历向量,满足条件者删除之。

然而用erase处理过的迭代器会失效。

在C++11中erase的返回值是下一个迭代器,因此可以这样用:

itr=vec.erase(itr);

最好的解决办法是不用迭代器。用algorithm里的remove或者remove_if方法。这两个方法会把向量中所有满足条件的元素删除。

这里要注意的是,删除操作截短了向量,在原向量的尾部,也就是新向量尾部之后,会有一段垃圾段落。需要用erase的一个重载:

erase(itr1,itr2)删除掉。这次看起来多余的erase的调用是因为remove仅仅是将新向量的尾部作为返回值返回,而没有直接更改向量长度导致的。

例子:

vec.erase(remove_if(vec.begin(),vec.end(),[](Param param){

return (/*TODO:*/)?true;false;

}),vec.end());

 

转载于:https://www.cnblogs.com/farseeraliens/p/3144721.html

相关文章:

  • DOTween-Ease缓动函数
  • swift使用查阅资料备份2
  • win32环境下显示中文
  • ThinkPHP项目在Nginx上运行的配置问题
  • link @import区别 src href的区别
  • Android实战技巧: ListView之ContextMenu无法弹出
  • Python enumerate() 函数
  • ORACLE先找爹,再找儿子(层次查询的高级应用)
  • 面试题:单例模式三种模式,饿汉、饱汉、双重锁模式,实例及优劣详解 背过1...
  • 快餐店运行模拟C++程序源码代写
  • QT QML与C++混搭
  • 经典SQL语句大全---知识回顾系列
  • 细节
  • protocol buffers的编码原理
  • 【产品经理】产品经理的十大顶级错误
  • C++类的相互关联
  • C++类中的特殊成员函数
  • Essential Studio for ASP.NET Web Forms 2017 v2,新增自定义树形网格工具栏
  • Go 语言编译器的 //go: 详解
  • iOS 系统授权开发
  • java取消线程实例
  • JS创建对象模式及其对象原型链探究(一):Object模式
  • js递归,无限分级树形折叠菜单
  • NSTimer学习笔记
  • PHP面试之三:MySQL数据库
  • rabbitmq延迟消息示例
  • Vue源码解析(二)Vue的双向绑定讲解及实现
  • 简单易用的leetcode开发测试工具(npm)
  • 目录与文件属性:编写ls
  • 前端学习笔记之原型——一张图说明`prototype`和`__proto__`的区别
  • 在Mac OS X上安装 Ruby运行环境
  • 数据可视化之下发图实践
  • ​【原创】基于SSM的酒店预约管理系统(酒店管理系统毕业设计)
  • ​Linux·i2c驱动架构​
  • ​secrets --- 生成管理密码的安全随机数​
  • ​人工智能书单(数学基础篇)
  • # 20155222 2016-2017-2 《Java程序设计》第5周学习总结
  • # 达梦数据库知识点
  • # 日期待t_最值得等的SUV奥迪Q9:空间比MPV还大,或搭4.0T,香
  • $.ajax中的eval及dataType
  • %@ page import=%的用法
  • ()、[]、{}、(())、[[]]等各种括号的使用
  • (01)ORB-SLAM2源码无死角解析-(56) 闭环线程→计算Sim3:理论推导(1)求解s,t
  • (04)Hive的相关概念——order by 、sort by、distribute by 、cluster by
  • (附源码)php新闻发布平台 毕业设计 141646
  • (论文阅读11/100)Fast R-CNN
  • (每日持续更新)jdk api之FileFilter基础、应用、实战
  • (转)iOS字体
  • (转)mysql使用Navicat 导出和导入数据库
  • (转)winform之ListView
  • *上位机的定义
  • .h头文件 .lib动态链接库文件 .dll 动态链接库
  • .NET 4.0网络开发入门之旅-- 我在“网” 中央(下)
  • .NET 反射 Reflect
  • .NET 中使用 TaskCompletionSource 作为线程同步互斥或异步操作的事件