检查向量中的一组值

时间:2012-11-13 18:30:36

标签: c++ vector stl-algorithm

我有一组数字:

{2, 6, 8}

我想检查这些数字的是否在我的载体中

std::vector<int> myVector;

我知道我可以使用算法的std :: find:

单独检查每个
auto iter1 = std::find(myVector.begin(), myVector.end(), 2);
auto iter2 = std::find(myVector.begin(), myVector.end(), 6);
auto iter3 = std::find(myVector.begin(), myVector.end(), 8);

if(iter1 != myVector.end() || iter2 != myVector.end() || iter3 != myVector.end())
    std::cout << "A desired value was found in the vector!"

在这个例子中,只有三个数字,但真实的数字组将会更大。而且,这似乎有点单调乏味。有更好的解决方案吗?

2 个答案:

答案 0 :(得分:4)

您可以使用std::find_first_of

std::vector<int> myVector = /* something */;
std::vector<int> values = {2, 6, 8};
auto first_found = std::find_first_of(std::begin(myVector), std::end(myVector),
                                      std::begin(values), std::end(values));
if (first_found != std::end(myVector)) {
  // Found one of them!
}

答案 1 :(得分:0)

如果您想检查“套装”中是否包含数字,请使用std::set

std::set<int> myset = {3,4,6,34,2,6,78,8,5,0};
if (myset.count(5) > 0) {
   std::cout << "Hooray!" << std::endl;
}