Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/161.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何在std::vector中查找项的向量_C++_C++11_Vector_Find_Std - Fatal编程技术网

C++ 如何在std::vector中查找项的向量

C++ 如何在std::vector中查找项的向量,c++,c++11,vector,find,std,C++,C++11,Vector,Find,Std,如果存在向量,我们需要找到多个具有相同条件的项。 如果我们调用std::find_if,它将返回条件的第一次出现 std::vector <int> List{0,1,2,3,4,5,6}; auto item = find_if(List.begin(), List.end(), [](int x) { return x > 2; } ); std::向量列表{0,1,2,3,4,5,6}; auto item=find_i

如果存在向量,我们需要找到多个具有相同条件的项。 如果我们调用
std::find_if
,它将返回条件的第一次出现

 std::vector <int> List{0,1,2,3,4,5,6};
    auto item = find_if(List.begin(), List.end(), [](int x)
    {
        return x > 2;
    }
    );
std::向量列表{0,1,2,3,4,5,6};
auto item=find_if(List.begin(),List.end(),[](int x)
{
返回x>2;
}
);
我知道我们可以使用
std::for_each
并将条件和操作放入lambda表达式中,但我想问的是,是否有一种方法可以自行执行并返回已找到项的向量。

您可以使用满足谓词的项的副本填充向量

#include <vector>     // vector
#include <iterator>   // copy_if
#include <algorithm>  // back_inserter

int main()
{
  std::vector<int> List{0,1,2,3,4,5,6};
  std::vector<int> good_items;

  std::copy_if(List.begin(), List.end(), std::back_inserter(good_items),
             [](int x) { return x > 2; });
}
#包含//向量
#包括//copy\u(如果有)
#包括//back\u插入器
int main()
{
向量表{0,1,2,3,4,5,6};
标准::矢量良好_项;
std::copy_if(List.begin()、List.end()、std::back_插入器(好的项目),
[](int x){return x>2;});
}
std::back\u inserter
一起应该可以做到这一点