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::find
gebruiken als volgt:
if (std::find(v.begin(), v.end(), "abc") != v.end())
{
// Element in vector.
}
Om std::find
te kunnen gebruiken: include <algorithm>
toe.
Antwoord 2, autoriteit 18%
-
Als uw container alleen unieke waarden bevat, kunt u overwegen
std::set
in 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()) { ...
-
Als je vector gesorteerd wordt bewaard, gebruik dan
std::binary_search
, het biedt ook logaritmische complexiteit. -
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_of
in 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
.