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的数,那就都是正数if( find_if( begin(arr), end(arr), [](int v){return v<=0;} ) == end(arr) )
{
        // 都是正数
}第二个问题copy_if( begin(src), end(src), begin(dst), [](int v){return v>0;} );

windoze 发表于 2016-08-06 15:53

自己写不也就一句话么:
for_each(input.begin(), input.end(), [&](int n){ if(n>=0) output.push_back(n); });

folklore 发表于 2016-08-06 16:35

回复 2# windoze


    现在已经支持    for(auto &rItem: vector){
      xxx;yyy;
  }了吧

VIP_fuck 发表于 2016-08-08 08:46

lambda 一句代码就够了
页: [1]
查看完整版本: STL的algorithm有没有类似for_all/filter的算法