博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
std::remove_if
阅读量:6229 次
发布时间:2019-06-21

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

hot3.png

用于移除自定义可删除的vector元素

其中第三个参数是 返回改元素是否应该被删除,作用有点像std::sort 的自定义比较大小的函数

注意:

1.remove_if 会遍历指定元素区间 ,只是移动元素位置,满足条件的元素可能被覆盖掉,返回可以erase的区     间所以配合erase 就可达到删除目的

2.内部只是移动了 删掉了元素,如果模板类型是对象指针,那么可能 因为erase后 可能导致内存泄露 而          踩坑,这时候还是自己写方便一点,或者直接在回调函数里面添加 对 满足条件的元素的 内存清除的代码

// TEMPLATE FUNCTION remove_iftemplate
inline _FwdIt _Remove_if(_FwdIt _First, _FwdIt _Last, _Pr _Pred) { // remove each satisfying _Pred _FwdIt _Next = _First; for (++_First; _First != _Last; ++_First) if (!_Pred(*_First)) *_Next++ = _Move(*_First); return (_Next); }
std::vector
str; str.push_back('1'); str.push_back('2'); str.push_back('3'); str.push_back('4'); str.push_back('5'); str.push_back('\0'); cout << &(str[0]) << endl; str.erase(std::remove_if(str.begin(), str.end(), [](char c)->bool { if (c == '2')//自定义条件 { return true; } return false; })); cout << &(str[0]) << endl;

 

 

转载于:https://my.oschina.net/kkkkkkkkkkkkk/blog/734269

你可能感兴趣的文章
2016 年总结
查看>>
将String转化成Stream,将Stream转换成String
查看>>
【工具使用系列】关于 MATLAB 遗传算法与直接搜索工具箱,你需要知道的事
查看>>
Kali-linux Arpspoof工具
查看>>
PDF文档页面如何重新排版?
查看>>
基于http协议使用protobuf进行前后端交互
查看>>
bash腳本編程之三 条件判断及算数运算
查看>>
php cookie
查看>>
linux下redis安装
查看>>
弃 Java 而使用 Kotlin 的你后悔了吗?| kotlin将会是最好的开发语言
查看>>
JavaScript 数据类型
查看>>
量子通信和大数据最有市场突破前景
查看>>
对‘初学者应该选择哪种编程语言’的回答——计算机达人成长之路(38)
查看>>
如何申请开通微信多客服功能
查看>>
Sr_C++_Engineer_(LBS_Engine@Global Map Dept.)
查看>>
非监督学习算法:异常检测
查看>>
jquery的checkbox,radio,select等方法总结
查看>>
Linux coredump
查看>>
Ubuntu 10.04安装水晶(Mercury)无线网卡驱动
查看>>
我的友情链接
查看>>