Controleer in C++ of std::vector<string> bevat een bepaalde waarde

Is er een ingebouwde functie die me vertelt of mijn vector een bepaald element bevat of niet?
bijv.

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?

Antwoord 1, autoriteit 100%

U kunt std::findgebruiken als volgt:

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

Om std::findte kunnen gebruiken: include <algorithm>toe.


Antwoord 2, autoriteit 18%

  1. Als uw container alleen unieke waarden bevat, kunt u overwegen std::setin plaats daarvan. Het maakt het opvragen van set-lidmaatschap mogelijk met logaritmische complexiteit.

    std::set<std::string> s;
     s.insert("abc");
     s.insert("xyz");
     if (s.find("abc") != s.end()) { ...
    
  2. Als je vector gesorteerd wordt bewaard, gebruik dan std::binary_search, het biedt ook logaritmische complexiteit.

  3. Als al het andere faalt, ga dan terug naar std::find, wat een eenvoudige lineaire zoekopdracht is.


Antwoord 3, autoriteit 11%

In C++ 11 kunt u std::any_ofin plaats daarvan gebruiken.

Een voorbeeld om te vinden of er een nul is in de array:

std::array<int,3> foo = {0,1,-1};
if ( std::any_of(foo.begin(), foo.end(), [](int i){return i==0;}) )
std::cout << "zero found...";

Antwoord 4, Autoriteit 2%

Het is in <algorithm>en genaamd std::find.


Antwoord 5

std::find().

Other episodes