在C ++中检查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?
您可以使用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()) { ... -
如果你的向量保持sorting,使用
std::binary_search,它也提供对数复杂度。 -
如果一切都失败了,回退到
std::find,这是一个简单的线性search。
在C ++ 11中,您可以使用std :: any_of来代替。
它在<algorithm>并被称为std::find 。
std::find() 。