【问题标题】:Hot to find vector<string> element in a vector<string> [duplicate]在向量<字符串>中查找向量<字符串>元素很热门[重复]
【发布时间】:2014-03-11 11:39:36
【问题描述】:

我有一些vector&lt;string&gt; v1,使用 push_back 填充:

v1.push_back("a");
v1.push_back("b");
v1.push_back("c");
v1.push_back("d");
v1.push_back("e");

我还有一些 vector&lt;string&gt; v2 和一个迭代器,其中包含一些元素

vector<string>::iterator v2iter;//some element of v2

我需要检查一下,v1 中是否存在 v2iter 元素

find(v1, v2iter); //smth like this

【问题讨论】:

    标签: c++ vector find


    【解决方案1】:

    您可以使用标准算法std::find

    例如

    #include <algorithm>
    #include <vector>
    //..
    if ( std::find( v1.begin(), v1.end(), *v2iter ) != v1.end() )
    {
       std::cout << *v2iter << " is found in v1" << std::endl;
    }
    

    或者你可以使用标准算法std::any_of

    例如

    #include <algorithm>
    #include <vector>
    #include <functional>
    //..
    if ( std::any_of( v1.begin(), v1.end(), std::bind2nd( std::equal_to<std::string>(), *v2iter ) ) )
    {
       std::cout << *v2iter << " is found in v1" << std::endl;
    }
    

    或者如果第一个向量是有序的,那么你可以使用算法std::binary_search

    例如

    #include <algorithm>
    #include <vector>
    //..
    if ( std::binary_search( v1.begin(), v1.end(), *v2iter ) )
    {
       std::cout << *v2iter << " is found in v1" << std::endl;
    }
    

    【讨论】:

      【解决方案2】:

      您可以使用:

          vector <string > :: iterator it , fit ;
          for ( it = v2.begin() ; it != v2.end() ; it++ ){
             fit = find ( v1.begin() , v1.end() , *it ) ;
             if ( fit != v1.end() ){
              // means that the element is present in v1 
             }
          }
      

      【讨论】:

        猜你喜欢
        • 2015-09-22
        • 1970-01-01
        • 2021-11-25
        • 2016-03-03
        • 1970-01-01
        • 1970-01-01
        • 2013-12-21
        • 1970-01-01
        • 2013-06-12
        相关资源
        最近更新 更多