C++ | 关联容器map通过值(Value)找键(Key)
今天又学到了一个关于关联容器map
小技巧:通过值(Value)来寻找对应的键(Key),这个功能通过std::find_if
实现,代码如下
template <class T, class U> T findKeyByValue(const U Val, const std::map<T, U>& map_)
{
auto find_item = std::find_if(map_.begin(), map_.end(),
[Val](const auto& item) { return item.second == Val; });
//
T key;
if (find_item != map_.end())
{
key = (*find_item).first;
}
return key;
}
测试代码如下:
#include <iostream>
#include <map>
#include <algorithm>
template <class T, class U> T findKeyByValue(const U Val, const std::map<T, U>& map_)
{
auto find_item = std::find_if(map_.begin(), map_.end(),
[Val](const auto& item) { return item.second == Val; });
//
T key;
if (find_item != map_.end())
{
key = (*find_item).first;
}
return key;
}
int main(int argc, char* argv[])
{
std::map<std::string, int> test_map{{"A", 65}, {"B", 66}, {"C", 67}};
int value = 66;
std::cout << findKeyByValue(value, test_map) << std::endl;
return 0;
}
可以看到输出结果为值66
对应的键B
:
本文来自博客园,作者:Fitanium,转载请注明原文链接:https://www.cnblogs.com/Fitanium/p/16792982.html