Ответ 1
Вы можете использовать std::find
bool found = (std::find(my_list.begin(), my_list.end(), my_var) != my_list.end());
Вам нужно включить <algorithm>
. Он должен работать с стандартными контейнерами, списками векторов и т.д.
У меня есть список элементов, скажем, целых чисел, и я хочу проверить, является ли моя переменная (другое целое) одним из элементов из списка. В 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 значение, возвращаемое для каждого шага итерации). И я не уверен, как это сделать на С++.
Вы можете использовать std::find
bool found = (std::find(my_list.begin(), my_list.end(), my_var) != my_list.end());
Вам нужно включить <algorithm>
. Он должен работать с стандартными контейнерами, списками векторов и т.д.
std::list
не предоставляет метод поиска. Вы можете перебирать список и проверять, существует ли элемент или использовать std::find
. Но я думаю, что для вашей ситуации std::set
предпочтительнее. Первый будет принимать O(n)
время, но позже займет O(lg(n))
время для поиска.
Вы можете просто использовать:
if(mySet.find(myVar) != mySet.end()){
//do whatever
}
вы должны #include <algorithm>
, затем вы можете использовать std:: find
Используйте std::find
, что-то вроде:
if (std::find(std::begin(my_list), std::end(my_list), my_var) != std::end(my_list))
// my_list has my_var