问题
Is there any built in function which tells me that my vector contains a certain element or not e.g.
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?
回答1:
You can use std::find as follows:
if (std::find(v.begin(), v.end(), "abc") != v.end())
{
// Element in vector.
}
To be able to use std::find
: include <algorithm>
.
回答2:
If your container only contains unique values, consider using std::set instead. It allows querying of set membership with logarithmic complexity.
std::set<std::string> s; s.insert("abc"); s.insert("xyz"); if (s.find("abc") != s.end()) { ...
If your vector is kept sorted, use std::binary_search, it offers logarithmic complexity as well.
If all else fails, fall back to std::find, which is a simple linear search.
回答3:
In C++11, you can use std::any_of
instead.
An example to find if there is any zero in the 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...";
回答4:
it's in <algorithm>
and called std::find
.
回答5:
std::find().
来源:https://stackoverflow.com/questions/6277646/in-c-check-if-stdvectorstring-contains-a-certain-value