泛型算法(十三)之单值过滤
2016-01-19 17:17
239 查看
1、unique(ForwardIterator first, ForwardIterator last):对序列中一群连续相等的元素,仅保留第一个元素,该群其他元素被这群元素之后的其他值的元素替换。该函数不改变这些值的相互顺序,不改变容器的size。函数返回值为最后一个保留元素的下一个位置(past-the-end element)。建议函数返回后resize容器对象。
想要真正删除重复的元素可以这样:
或者这样:
2、unique(ForwardIterator first, ForwardIterator last, BinaryPredicate pred):重载版本,用二元谓词pred替换operator==算符。
自己实现pred,向算法定制操作。
3、unique_copy(InputIterator first, InputIterator last, OutputIterator result):把一个序列中元素拷贝到另一个序列;对于一群连续的相等的元素,仅拷贝第一个元素。
4、unique_copy(InputIterator first, InputIterator last, OutputIterator result, BinaryPredicate pred):重载版本,用二元谓词pred替换operator==算符
自己实现pred,向算法定制操作。
std::vector<int> c = {1, 1, 1, 2, 3, 3, 4, 5}; std::unique(c.begin(), c.end()); for (auto var : c) { std::cout << var << ","; } //打印结果:1,2,3,4,5,3,4,5,
想要真正删除重复的元素可以这样:
c.resize(std::unique(c.begin(), c.end()) - c.begin());
或者这样:
c.erase(std::unique(c.begin(), c.end()), c.end());
2、unique(ForwardIterator first, ForwardIterator last, BinaryPredicate pred):重载版本,用二元谓词pred替换operator==算符。
自己实现pred,向算法定制操作。
3、unique_copy(InputIterator first, InputIterator last, OutputIterator result):把一个序列中元素拷贝到另一个序列;对于一群连续的相等的元素,仅拷贝第一个元素。
std::vector<int> c = {1, 1, 1, 2, 3, 3, 4, 5}; std::vector<int> result; result.resize(5); //将c中不重复的元素逐个拷贝到result中 std::unique_copy(c.begin(), c.end(), result.begin()); //输出result for (auto var : result) { std::cout << var << ","; } //打印结果:1,2,3,4,5,
4、unique_copy(InputIterator first, InputIterator last, OutputIterator result, BinaryPredicate pred):重载版本,用二元谓词pred替换operator==算符
自己实现pred,向算法定制操作。
相关文章推荐
- 一个TextView设置不同大小字体、EditText显示两行不同样式hint
- 设计模式-简单工厂模式
- su -i在某一行前或后添加内容
- 【Android】问题记录
- openstack运维实战系列(三)之cinder磁盘挂载
- ios开发的block反向传值
- Codeforces Round #296 (Div. 1) E. Triangles 3000
- yarn安装部署
- js转换/Date(........)/
- html中文乱码
- ios开发的block反向传值
- Delphi PChar与String互转
- oracle dblink相关的知识
- Oracle CDC基本操作及用法
- android 使父控件和子控件都处理触摸事件方式
- Linux学习第4天:linux系统管理
- Java内存模型FAQ(十二)如果我需要写一个VM,我需要做些什么
- 屏幕截取-2种模式
- Delphi+MySQL:TADOQuery使用插入中文乱码解决方法
- 有没有做开发多年的朋友去创业呢?