1. 程式人生 > >vector 查找指定元素

vector 查找指定元素

most end == 自定義類 include 類型 最重要的 push_back nbsp

方法一:

  自己寫循環遍歷

方法二:

  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中保存的是自定義類型(結構體/類),則需要為該類型重載==操作符。

#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) //重載 “==” 操作符
  {
    return obj.ymd == ymd && obj.gpcode == 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;

}

vector 查找指定元素