1. 程式人生 > 程式設計 >C++ map 根據value找key的實現

C++ map 根據value找key的實現

flyfish

測試所需標頭檔案

#include <algorithm>  
#include <vector>   
#include <map>
#include <string>

初始

std::map<int,std::string> t;
  t.insert(std::make_pair(1,"a"));
  t.insert(std::make_pair(2,"b"));
  t.insert(std::make_pair(3,"c"));
  t.insert(std::make_pair(4,"d"));

根據key 找 value

std::string s = "";
  auto it = t.find(2);
  if (it != t.end())
  {
    s = (*it).second;
  }

根據value 找key lambda方式

std::string s = "c";
  auto find_item = std::find_if(t.begin(),t.end(),[s](const std::map<int,std::string>::value_type item)
  {
    return item.second == s;
  });

  int n = 0;
  if (find_item!= t.end())
  {
    n = (*find_item).first;
  }

根據value 找key 函式物件方式

class finder
{
public:
  finder(const std::string &cmp_string) :s_(cmp_string){}
  bool operator ()(const std::map<int,std::string>::value_type &item)
  {
    return item.second == s_;
  }
private:
  const std::string &s_;
};


//呼叫
int n = 0;
auto it = std::find_if(t.begin(),finder("d"));
  if (it != t.end())
  {
    n = (*it).first;
  }

以上這篇C++ map 根據value找key的實現就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。