У меня есть набор чисел:
{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!"
В этом примере есть только три числа, но реальный набор чисел будет больше. Кроме того, это кажется утомительным. Есть ли лучшее решение?
Ты можешь использовать 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!
}
Если вы хотите проверить, включен ли номер в «набор», используйте 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;
}