STL - 移除(remove)和释放(erase)集合元素
remove(移除):
这个操作并不是真正地删除元素,它会移除指定的元素,然后后面的元素依次前移,最后用别的元素来补充。
erase(释放):
这个操作会指定释放区间的头和尾迭代器(iterator)。
如果要一次性删除指定元素:
coll.erase(remove(coll.begin(), coll.end(), [removed element]), coll.end());
代码如下:
list<int> coll1;
for (int i = ; i <= ; ++i)
{
coll1.push_front(i);
coll1.push_back(i);
}
cout << "** collection 1: **" << endl;
ContainerUtil<list<int>>::printElements(coll1);
// remove all elements with value 3
list<int>::iterator end = remove(coll1.begin(), coll1.end(), );
cout << "** collection 1(after remove elements 3): **" << endl;
ContainerUtil<list<int>>::printElements(coll1);
// print number of removed elements
cout << "number of removed elements : " << distance(end, coll1.end()) << endl;
// release 'removed' elements
coll1.erase(end, coll1.end());
cout << "** collection 1(after releasing removed elements): **" << endl;
ContainerUtil<list<int>>::printElements(coll1);
// remove & release elements with value 4 all at once
coll1.erase(remove(coll1.begin(), coll1.end(), ), coll1.end());
cout << "** collection 1(after remove & release elements 4): **" << endl;
ContainerUtil<list<int>>::printElements(coll1);
运行结果:
** collection 1: **
6 5 4 3 2 1 1 2 3 4 5 6
** collection 1(after remove elements 3): **
6 5 4 2 1 1 2 4 5 6 5 6
number of removed elements : 2
** collection 1(after releasing removed elements): **
6 5 4 2 1 1 2 4 5 6
** collection 1(after remove & release elements 4): **
6 5 2 1 1 2 5 6
STL - 移除(remove)和释放(erase)集合元素的更多相关文章
- STL笔记(4)关于erase,remove
STL笔记(4)关于erase,remove 你要erase的元素很容易识别.它们是从区间的“新逻辑终点”开始持续到区间真的终点的原来区间的元素.要除去那些元素,你要做的所有事情就是用那两个迭代器调用 ...
- 当JAVA集合移除自身集合元素时发生的诸多问题
一段代码目的是想删除集合中包括"a"字符串的集合项: public class TestForeach { public static void main(String[] arg ...
- Lambda 表达式遍历集合时用remove方法删除list集合中满足条件的元素问题
一:循环遍历list集合的四种方式 简单for循环 iterator循环 增加for循环 Lanbda表达式 二:四种遍历方式的用法示例 //简单for循环 List<SalaryAdjustm ...
- 高效率遍历Map以及在循环过程中移除 remove指定key
//高效率遍历Map以及在循环过程中移除 remove指定key //使用iter循环的时候 可以在循环中移除key,for在循环的过程中移除会报错哦 //本方法效率高 Iterator iter = ...
- STL—内存的配置与释放
上一篇我们介绍了STL对象的构造与析构,这篇介绍STL内存的配置与释放. STL有两级空间配置器,默认是使用第二级.第二级空间配置器会在某些情况下去调用第一级空间配置器.空间配置器都是在allocat ...
- 删除集合元素Collection ,remove()
package seday11;/*** @author xingsir*/public class coordinate { private int x; private int y; /* * 右 ...
- Java集合——遍历集合元素并修改
Java集合——遍历集合元素并修改 摘要:本文主要总结了遍历集合的方式,以及在遍历时修改集合要注意的问题. 遍历Collection 对List和Set的遍历,有四种方式,下面以ArrayList为例 ...
- Java修炼——ArrayList常用的方法以及三种方式遍历集合元素。
List接口ArrayList用法详解 ArrayList常用方法: 1. List.add():添加的方法(可以添加字符串,常量,以及对象) List list=new ArrayList(); l ...
- java 数据类型:集合接口Collection之常用ArrayList;lambda表达式遍历;iterator遍历;forEachRemaining遍历;增强for遍历;removeIf批量操作集合元素(Predicate);
java.util.Collection接口 Java的集合主要由两个接口派生出来,一个是Collection一个是Map,本章只记录Collection常用集合 集合只能存储引用类型数据,不能存储基 ...
随机推荐
- Vue 2.0学习(六)内置指令
基本指令 1.v-cloak v-cloak不需要表达式,它会在Vue实例结束编译时从绑定的HTML元素上移除,经常和CSS的display:none配合使用. <div id="ap ...
- 【费用流】BZOJ1927-[Sdoi2010]星际竞速
[题目大意] 有一些点,它们之间存在一些有向边(由编号小的到编号大的),从一点到另一点消耗时间为边长.也可以消耗Ti时间直接抵达任意一个点.问所有点都走一遍最少需要多少时间? [思路] ①将每个点i拆 ...
- [转]Android:布局实例之模仿QQ登录界面
Android:布局实例之模仿QQ登录界面 预览图: 准备: 1.找到模仿对象 QQ登陆界面UI下载>>>>> 2.导入工程 3.查看布局结构和使用控件 其对应效果图分布 ...
- 《python学习手册》第34章 异常对象
基于字符串的异常 python在2.6之前可以使用字符串来定义异常,并且是通过对象标识符来匹配的(即通过is 而不是==) myexc = "My excetion string" ...
- iOS开发经验总结——基础工程
iOS开发经验总结--依赖库 这篇博客,我想说一下开发中经常遇到的一个问题,虚拟个场景描述一下的话,应该是这样的. 项目经理:今天我们正式开始一个新项目,iOSer你负责把苹果端的APP完成,有没有问 ...
- MySQL5.6新特性之GTID、多线程复制 - 不知为何
http://www.tuicool.com/articles/yi2aui http://www.cnblogs.com/cenalulu/category/380263.html
- python笔记6-%u60A0和\u60a0类似unicode解码
前言 有时候从接口的返回值里面获取到的是类似"%u4E0A%u6D77%u60A0%u60A0"这种格式的编码,不是python里面的unicode编码. python里面的uni ...
- java代码逆向工程生成uml
今天在看一个模拟器的源码,一个包里有多个类,一个类里又有多个属性和方法,如果按顺序看下来,不仅不能对整个模拟器的框架形成一个大致的认识,而且只会越看越混乱,所以,想到有没有什么工具可以将这些个类以及它 ...
- linux查看文件有多少行(WC)
使用wc命令 具体通过wc --help 可以查看. 如:wc -l filename 就是查看文件里有多少行 wc -w filename 看文件里有多少个word. wc -L filename ...
- 《Hadoop应用开发技术详解》
<Hadoop应用开发技术详解> 基本信息 作者: 刘刚 丛书名: 大数据技术丛书 出版社:机械工业出版社 ISBN:9787111452447 上架时间:2014-1-10 出版日期:2 ...