Ответ 1
Вы можете использовать std::find
следующим образом:
if (std::find(v.begin(), v.end(), "abc") != v.end())
{
// Element in vector.
}
Чтобы использовать std::find
: include <algorithm>
.
Есть ли встроенная функция, которая говорит мне, что мой вектор содержит определенный элемент или нет например.
std::vector<string> v;
v.push_back("abc");
v.push_back("xyz");
if (v.contains("abc")) // I am looking for one such feature, is there any
// such function or i need to loop through whole vector?
Вы можете использовать std::find
следующим образом:
if (std::find(v.begin(), v.end(), "abc") != v.end())
{
// Element in vector.
}
Чтобы использовать std::find
: include <algorithm>
.
Если ваш контейнер содержит только уникальные значения, вместо этого используйте std::set
. Он позволяет запрашивать заданное членство с логарифмической сложностью.
std::set<std::string> s;
s.insert("abc");
s.insert("xyz");
if (s.find("abc") != s.end()) { ...
Если ваш вектор сортируется, используйте std::binary_search
, он также предлагает логарифмическую сложность.
Если все остальное не удается, вернитесь к std::find
, который представляет собой простой линейный поиск.
В С++ 11 вместо него можно использовать std:: any_of.
в <algorithm>
и называется std::find
.