Chinaunix

标题: STL的algorithm有没有类似for_all/filter的算法 [打印本页]

作者: cdsfiui    时间: 2016-08-06 11:35
标题: STL的algorithm有没有类似for_all/filter的算法
例如,给定一个数组,判断是否每一个值都是正数,有没有类似for_all的算法,可以接受一个数组和一个[]{ int i } {return i > 0; }
再如,给定一个数组,把所有都是正数的元素拿出来,放到另一个新的容器。

我知道for_each,我想要的是类似find_if这样的,返回一个bool类型的函数。
什么算法呢,谢谢。
作者: bruceteen    时间: 2016-08-06 11:35
没有小于等于0的数,那就都是正数
  1. if( find_if( begin(arr), end(arr), [](int v){return v<=0;} ) == end(arr) )
  2. {
  3.         // 都是正数
  4. }
复制代码
第二个问题
  1. copy_if( begin(src), end(src), begin(dst), [](int v){return v>0;} );
复制代码

作者: windoze    时间: 2016-08-06 15:53
自己写不也就一句话么:

  1. for_each(input.begin(), input.end(), [&](int n){ if(n>=0) output.push_back(n); });
复制代码

作者: folklore    时间: 2016-08-06 16:35
回复 2# windoze


    现在已经支持
  1.     for(auto &rItem: vector){
  2.       xxx;yyy;
  3.   }
复制代码
了吧
作者: VIP_fuck    时间: 2016-08-08 08:46
lambda 一句代码就够了




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2