Когда вы объявляете переменную с ее конструктором по умолчанию, вы не ставите ()
после нее (хотя это необязательно, когда вы используете new
для выделения места в бесплатном хранилище). Итак, эта строка:
std::vector<double> vec();
должно стать
std::vector<double> vec;
Если оставить все как есть, он думает, что строка - это прототип функции функции с именем vec
, которая не принимает параметров и возвращает std::vector<double>
, поэтому вы получаете ошибку компилятора.
И да, ваш код для поиска предмета будет работать (это называется линейным поиском). Также, если вы хотите, вы можете использовать std::find
:
if (std::find(vec.begin(), vec.end(), value) != vec.end())
// found value in vec
Если ваш вектор в отсортированном порядке, вы также можете использовать binary_search
, что намного быстрее, чем find
, и использование такое же за исключением того, что binary_search
возвращает bool
вместо итератор (так что вам не нужно проверять его на vec.end()
). Убедитесь, что вы включили заголовок algorithm
, если используете любой из них.