如何在 std::vector 中查找项目向量
How to find vector of items in std::vector
如果有向量,我们需要找到多个具有相同条件的项目。
如果我们调用 std::find_if
它将 return 条件的第一次出现。
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::for_each
并将条件和操作放在 lambda 表达式中,但我想问是否有一种方法可以自己完成,return 找到一个向量项目。
您可以使用 std::copy_if
用满足谓词的项目的副本填充向量。
#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; });
}
std::copy_if
加上 std::back_inserter
应该可以解决问题
如果有向量,我们需要找到多个具有相同条件的项目。
如果我们调用 std::find_if
它将 return 条件的第一次出现。
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::for_each
并将条件和操作放在 lambda 表达式中,但我想问是否有一种方法可以自己完成,return 找到一个向量项目。
您可以使用 std::copy_if
用满足谓词的项目的副本填充向量。
#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; });
}
std::copy_if
加上 std::back_inserter
应该可以解决问题