1

私は一連の数字を持っています:

{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!"

この例では、数字は3つしかありませんが、実際の数字のセットはさらに大きくなります。また、これはちょっと退屈なようです。より良い解決策はありますか?

4

2 に答える 2

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!
}
于 2012-11-13T18:34:46.080 に答える
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;
}
于 2012-11-13T18:34:20.063 に答える