在C ++中检查std :: vector< string>

In C++ check if std::vector<string> contains a certain value

本问题已经有最佳答案,请猛点这里访问。

有没有内置函数告诉我向量是否包含某个元素例如

1
2
3
4
5
6
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如下:

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

能够使用std::findinclude


  • 如果容器只包含唯一值,请考虑使用std::set。它允许查询具有对数复杂性的集合成员。

    1
    2
    3
    4
    std::set<std::string> s;
    s.insert("abc");
    s.insert("xyz");
    if (s.find("abc") != s.end()) { ...
  • 如果向量保持排序,那么使用std::binary_search,它也提供对数复杂性。

  • 如果所有其他方法都失败了,则返回到std::find,这是一个简单的线性搜索。


  • 在C++ 11中,您可以使用EDCOX1 OR 9来代替。

    查找数组中是否有零的示例:

    1
    2
    3
    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...";


    里,叫std::find


    std::find()