В С++ проверьте, содержит ли std::vector <string> определенное значение - программирование
Подтвердить что ты не робот

В С++ проверьте, содержит ли std::vector <string> определенное значение

Есть ли встроенная функция, которая говорит мне, что мой вектор содержит определенный элемент или нет например.

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?
4b9b3361

Ответ 1

Вы можете использовать std::find следующим образом:

if (std::find(v.begin(), v.end(), "abc") != v.end())
{
  // Element in vector.
}

Чтобы использовать std::find: include <algorithm>.

Ответ 2

  • Если ваш контейнер содержит только уникальные значения, вместо этого используйте std::set. Он позволяет запрашивать заданное членство с логарифмической сложностью.

    std::set<std::string> s;
    s.insert("abc");
    s.insert("xyz");
    if (s.find("abc") != s.end()) { ...
    
  • Если ваш вектор сортируется, используйте std::binary_search, он также предлагает логарифмическую сложность.

  • Если все остальное не удается, вернитесь к std::find, который представляет собой простой линейный поиск.

Ответ 3

В С++ 11 вместо него можно использовать std:: any_of.

Ответ 4

в <algorithm> и называется std::find.