remove_copy_if
来源:互联网 发布:医学数据库检索方法 编辑:程序博客网 时间:2024/05/22 09:51
template<class InputIterator, class OutputIterator, class Predicate> OutputIterator remove_copy_if( InputIterator _First, InputIterator _Last, OutputIterator _Result, Predicate _Pred
最后一个参数是谓词表达式,微软里面有个解释说
解决输入的迭代器第一个元素的位置在元素中移除的范围。
解决输入的迭代器通过最终元素的位置一在元素中移除的范围。
解决输出的迭代器第一个元素的位置在元素中移除的目标范围。
必须满足的一元谓词变为元素的值将被替换。
最后一个参数是一元谓词,http://technet.microsoft.com/zh-cn/0ee18a2x(v=vs.98)
今天我自己试了试,发现二元谓词同样也可以,只不过我bind2nd了谓词的一个参数。
使用如下:
方法1:使用一元函数对象
template<typename _Ty>struct NoEqualByTimeStamp: public unary_function<_Ty, bool>{private:double TimeStamp;public:explicit NoEqualByTimeStamp<_Ty>(const double &ts):TimeStamp(ts){}bool operator()(const _Ty& _E)const{return _E.getTimeStamp() != TimeStamp;}};std::remove_copy_if(list.begin(),list.end(), back_inserter(list2),NoEqualByTimeStamp<Event>(time));
注:
back_inserter(list2)使用验证可以,但使用list2.begin()运行时显示迭代器出错,http://bbs.csdn.net/topics/360048951处讨论了这个问题,但我验证的结果并未完全正确,留待以后注意。
方法2:使用二元函数对象
template<typename _Ty1,typename _Ty2>struct EqualByTimeStamp: public unary_function<_Ty1,_Ty2, bool>{bool operator()(const _Ty1& _Left, const _Ty2& _Right)const{return _Left.getTimeStamp() == _Right;}};std::remove_copy_if(list.begin(),list.end(), back_inserter(list),bind2nd(not2(EqualByTimeStamp<Event,double>()),time));
注:这里利用bind2nd绑定了第二个参数_Ty2,由于remove_copy_if是取谓词的反义,所以要删除相等的元素的话要加上not2().
令注:remove_copy_if()不会删除实际元素,需要调用erase()删除
- remove_copy_if
- remove_copy_if
- remove_copy_if
- remove_copy/remove_copy_if详解
- remov,remove_if,remove_copy,remove_copy_if
- STL_Algorithm3: remove, remove_if, remove_copy, remove_copy_if
- 泛型算法系列19:remove_if()&&remove_copy_if()
- STL 之remove,remove_if,remove_copy,remove_copy_if
- STL algorithm算法remove_copy,remove_copy_if(48)
- STL 之remove,remove_if,remove_copy,remove_copy_if
- STL之remove、remove_copy、remove_if、remove_copy_if
- C++ STL 算法:删除算法(2)remove_copy、remove_copy_if
- STL_算法_删除(remove、remove_if、remove_copy、remove_copy_if)
- STL算法之—————remove_if, remove, remove_copy_if
- [C/C++]_[初级]_[使用remove,remove_if,remove_copy_if过滤元素或字符]
- STL常用算法: remove,remove_if,remove_copy,remove_copy_if,remove系列算法和partition的区别...
- iPhone/iPad安装包的三种格式 deb、ipa 和 pxl的解释和说明
- 根据webconfig获取数据库名称
- HDU4001-To Miss Our Children Time(DAG动态规划)
- 各浏览器对页面外部资源加载的策略
- 第四章,从零开始学Android--Android中的Button按钮
- remove_copy_if
- 关于windows窗体FORM程序打包成一个文件
- 程序员的出路(转载)
- 编译自己的程序到openwrt固件中去
- 关于windows窗体FORM程序打包成一个安装文件
- 分享一个不错的C++版单例模式封装类
- 金步国作品列表
- lua程序设计第二版 读书笔记(5-8章)
- makefile变量赋值