vector、map 判断某元素是否存在、查找指定元素

一、vector

 1.判断某元素是否存在
  ```

vector vStr;

     int  nRet = std::count(vStr.begin(), vStr.end(),  "xiaochun" ); //判断vector中是否有 "xiaochun" 这个元素

         
     2.查找某个元素
     
         方法一:
 
           自己写循环遍历
 
 
         方法二:
       vector<string> vec;

       vector<string>::iterator iter;

       string gpcode= "SZ000001" ;

       iter = find(vec.begin(), vec.end(), gpcode);

        if (iter != vec.end())
       {
          //vec中存在"SZ000001"
       }

        else
       {
          //没找到
       }        

         注意:
      
           如果vector中保存的是自定义类型(结构体/类),则需要为该类型重载==操作符。再用find
 
    ```
     #include <stdio.h>
         #include <vector>
         #include <string>
         #include <algorithm>  //是C++的标准模版库(STL)中最重要的头文件之一,提供了大量基于迭代器的非成员模板函数。
 
         class  DemoStruct
         {
            public :
           string gpcode;
            int  ymd;
           vector< int > vec;
           DemoStruct()
           {
             ymd = 20170707;
 
             gpcode =  "" ;
           }
 
            bool  operator == ( const  DemoStruct & obj)  const  //重载 “==” 操作符,函数最后的 const 别忘了,否则会报错。(详见:http://www.cnblogs.com/SZxiaochun/p/7731900.html)
           {
              return  ymd == obj.ymd && gpcode == obj.gpcode;   //具体匹配条件,可以自己设定
           }
         };
 
         int  main()
         {  
           vector<DemoStruct> vec_struct;
 
           DemoStruct demo;
           demo.gpcode =  "SZ000001" ;
           demo.ymd = 20170707;
           demo.vec.push_back(0);
           vec_struct.push_back(demo);
 
           DemoStruct tmpdemo;
           tmpdemo.gpcode =  "SZ000001" ;
           tmpdemo.ymd = 20170707;
 
           vector<DemoStruct>::iterator iter;
           iter = find(vec_struct.begin(), vec_struct.end(), tmpdemo);
            if  (iter != vec_struct.end())
           {
              printf ( "%s" , "find it" );
           }
            return  0;
         }
         

二、map

1.判断某元素是否存在
```
map< int , string> mapDemo;

     bool  bRet = mapDemo.count(100); //判断mapDemo中是否有 key = 100 的元素

     2.查找某个元素
       ```
  map< int , string>::iterator iter = mapDemo.find(100);
         if  (iter != m_Int.end())
         {
             //找到了
         }
         else
         {
             //没找到
         }
    

原文链接: https://www.cnblogs.com/xiaohai123/p/16292854.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    vector、map 判断某元素是否存在、查找指定元素

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/189166

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月12日 下午2:42
下一篇 2023年2月12日 下午2:43

相关推荐