Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Как проверить есть ли в векторе значение

Радик Маратович Ученик (3), открыт 1 неделю назад
Как проверить есть ли в векторе значение и если его нет то значение добавить иначе не добавлять
2 ответа
Def Гений (63678) 1 неделю назад
std::find, если отсортирован - std::binary_search

Но если эту операцию нужно производить регулярно - вектор в качестве контейнера выбран явно неправильно.
Николай Веселуха Высший разум (368898) 1 неделю назад
 #include <algorithm> 
#include <iostream>
#include <iterator>
#include <vector>

using namespace std;

template<typename T>
bool contains(const vector<T>& vec, const T& val) {
return find(begin(vec), end(vec), val) != end(vec);
}

template<typename T>
void show(const char* prompt, const vector<T>& vec) {
cout << prompt;
copy(begin(vec), end(vec), ostream_iterator<T>(cout, " "));
cout.put('\n');
}

template<typename T>
T parse(const char* prompt) {
cout << prompt;
T value;
cin >> value;
cin.ignore(0x1000, '\n');
return value;
}

int main() {
using value_t = int;
vector<value_t> values{ 25,10, 73, 19, 38, 55, 48 };
show("values: ", values);
while (true) {
const auto value = parse<value_t>("value: ");
if (!contains(values, value)) values.push_back(value);
show("values: ", values);
}
}
Похожие вопросы