Implementation of finding key according to value in C + + Map



Header files required for testing

#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"));

Find value according to key

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

Find the key lambda method according to value

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;

How to find the key function object according to value

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

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

The above implementation of finding key based on value in C + + map is all the content shared by Xiaobian. I hope it can give you a reference and support developeppaer.