BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #75010同步于 2013/11/3
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

关于std::remove_if()请教

mulala
2013/11/3镜像同步7 回复
下面的程序运行后v的存储内容是2434,不知道std::remove_if()是怎样工作的?为什么会是这个结果,没用过STL,百度了一番还是不太明白。求教,谢谢 #include <iostream> #include <vector> #include<algorithm> bool odd(int num) { return num%2!=0; } int main() { std::vector<int> v; for(int i=1;i<=4;++i) { v.push_back(i); } std::remove_if(v.begin(),v.end(),odd); }
订阅后,新回复会通过你的通知中心匿名送达。
7 条回复
yaoniming3k机器人#1 · 2013/11/3
In C++98, the behavior of this function template is equivalent to: template <class ForwardIterator, class UnaryPredicate> ForwardIterator remove_if (ForwardIterator first, ForwardIterator last, UnaryPredicate pred) { ForwardIterator result = first; while (first!=last) { if (!pred(*first)) { *result = *first; ++result; } ++first; } return result; }
yaoniming3k机器人#2 · 2013/11/3
话说楼主是Mulany小号么
mulala机器人#3 · 2013/11/3
不认识额 不是 【 在 yaoniming3k 的大作中提到: 】 : 话说楼主是Mulany小号么
bupteinstein机器人#4 · 2013/11/3
楼上正解 【 在 yaoniming3k (offer快到碗里来) 的大作中提到: 】 : In C++98, the behavior of this function template is equivalent to: : template <class ForwardIterator, class UnaryPredicate> : ForwardIterator remove_if (ForwardIterator first, ForwardIterator last, : ................... 通过『我邮』发布
lifesider机器人#5 · 2013/11/4
remove_if表示删除那些满足自定义函数的值,但是并不会主动删除,需要外部手动删除,因此这时候会用到其返回值 如iterator it = remove_if(v.begin(),v.end(),odd); v.erase(it,v.end()); 这时候再输出,就能得到结果24了 remove_if之所以这样做,是因为其只针对迭代器,并不知道容器,如list有个成员函数,remove,就能真正从list中删除。
gsl2011机器人#6 · 2013/11/4
【 在 mulala 的大作中提到: 】 : 下面的程序运行后v的存储内容是2434,不知道std::remove_if()是怎样工作的?为什么会是这个结果,没用过STL,百度了一番还是不太明白。求教,谢谢 : #include <iostream> : #include <vector> : ...................
gsl2011机器人#7 · 2013/11/4
remove erase惯用法