Подтвердить что ты не робот

Проверьте, находится ли элемент в списке (содержит)

У меня есть список элементов, скажем, целых чисел, и я хочу проверить, является ли моя переменная (другое целое) одним из элементов из списка. В python я бы сделал:

my_list = [1,2,3,4] # elements
my_var = 3 # my variable
my_var in my_list # returns boolean

Как это сделать на С++? Я думал об использовании std::list, но в нем нет метода find. Я вижу такой метод в структуре std::set.

Более глубоко, проблема в том, что моей программе заданы некоторые уникальные идентификаторы (список, набор и т.д.), и я перебираю длинный список входных данных (ids) и проверяю, включены ли они в список (boolean значение, возвращаемое для каждого шага итерации). И я не уверен, как это сделать на С++.

4b9b3361

Ответ 1

Вы можете использовать std::find

bool found = (std::find(my_list.begin(), my_list.end(), my_var) != my_list.end());

Вам нужно включить <algorithm>. Он должен работать с стандартными контейнерами, списками векторов и т.д.

Ответ 2

std::list не предоставляет метод поиска. Вы можете перебирать список и проверять, существует ли элемент или использовать std::find. Но я думаю, что для вашей ситуации std::set предпочтительнее. Первый будет принимать O(n) время, но позже займет O(lg(n)) время для поиска.

Вы можете просто использовать:

if(mySet.find(myVar) != mySet.end()){
      //do whatever
}

Ответ 3

вы должны #include <algorithm>, затем вы можете использовать std:: find

Ответ 4

Используйте std::find, что-то вроде:

if (std::find(std::begin(my_list), std::end(my_list), my_var) != std::end(my_list))
    // my_list has my_var