博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Effective_STL 学习笔记(三十二) 如果真的想删除东西的话就在类似于 remove 的算法后接上 erase...
阅读量:5955 次
发布时间:2019-06-19

本文共 871 字,大约阅读时间需要 2 分钟。

 

remove 的声明:

1   template
2   ForwardIterator remove( ForwardIterator first, ForwardIterator last, const T & value );

remove 接收指定它操作的元素区间的一对迭代器,不接收一个容器,所以不知道作用与哪个容器

remove 并不 “真的” 删除东西,因为它做不到

 

从容器中除去一个元素,唯一的方法是调用那个容器的一个成员函数,几乎都是 erase 的某种形式

 

remove 移动指定区间中的元素直到所有 “不删除” 元素在区间的开头(相对位置和原来它们的一样)

它返回一个指向最后一个的下一个 “不删除的” 元素的迭代器,返回值是区间的 “新逻辑终点”

 

如果真的要删除东西的话,应该在 remove 后面接上 erase

1   vector
v;2   v.erase( remove( v.begin(), v.end(), 99 ), v.end() );3   cout << v.size();

把 remove 的返回值作为 erase 区间形式第一个实参传递,是个惯用法。

remove-list,整合到 list 的成员函数 remove 中

1   list
li;   // 建立一个 list2   li.remove(99); // 删除所有等于 99 的元素,3      // STL 中唯一的一个名叫 remove 又能从容器中去除元素的函数

在关联容器中类似的 remove_erase 函数叫 erase

 

同理,类似remove 算法:remove_if 和 unique 要删除东西

成对调用 unique 和 erase, unique 在 list 中类似于remove

 

转载于:https://www.cnblogs.com/kidycharon/p/10039889.html

你可能感兴趣的文章
记一次数组工具类 交集,去重
查看>>
1134 Vertex Cover
查看>>
webpack4.x实战七,生产模式和开发模式分开打包
查看>>
五、箭头函数
查看>>
Python模拟入栈出栈操作
查看>>
C语言中的DEBUG
查看>>
Mac node js环境的安装与测试
查看>>
Swift开发之粒子动画的实现
查看>>
Android安全开发之ZIP文件目录遍历
查看>>
Android 资讯类App项目实战 第一章 滑动顶部导航栏
查看>>
AngularJS内置指令 ng-xxx
查看>>
学习C语言必须知道的理论知识(第三章-C语句)
查看>>
实现按字符串的第一个字符的首字母排序
查看>>
睡眠排序法-objective C版的代码
查看>>
对于数组使用sizeof(a)和使用sizeof(a[0])
查看>>
小猿圈WEB前端之HTML5+CSS3面试题(一)
查看>>
jsmin 使用方法
查看>>
375 Inscribed Circles and Isosceles Triangles 等腰三角形 内接圆 圆周率PI表示
查看>>
js如何在指定页面跳转到另一指定页面
查看>>
jQuery判断checked的三种方法
查看>>