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


一、vector        1.判断某元素是否存在          vector vStr;                    int  nRet = std::count(vStr.begin(), vStr.end(),  "xiaochun" ); //判断vector中是否有 "xiaochun" 这个元素                2.查找某个元素                方法一:              自己写循环遍历              方法二:              vector vec;              vector::iterator iter;              string gpcode= "SZ000001" ;              iter = find(vec.begin(), vec.end(), gpcode);               if (iter != vec.end())            {               //vec中存在"SZ000001"            }               else            {               //没找到            }                    注意:                   如果vector中保存的是自定义类型(结构体/类),则需要为该类型重载==操作符。再用find            #include          #include          #include          #include   //是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 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::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          {              //没找到          }     

相关