0
点赞
收藏
分享

微信扫一扫

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 别忘了,否则会报错。
  {
     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
{
//没找到
}

举报

相关推荐

0 条评论