我正在尝试访问特定哈希键的值。示例代码如下。 Test Here
// unordered_map::at
#include <iostream>
#include <string>
#include <unordered_map>
int main ()
{
std::unordered_map<std::string,int> hashmap = {
{ "Apple", 300},
{ "Banana", 60},
{ "Orange", 70 } };
std::cout << "Value :" << hashmap[300]<<std::endl;
return 0;
}
但是,当我尝试访问特定值的密钥时,它可以正常工作,例如hashmap["Apple"]
,它会300
i,即Apple
的密钥。如何使其工作,如hashmap[300]
给“苹果”。
答案 0 :(得分:2)
如何使其工作,而不是像
hashmap[300]
那样提供"Apple"
。
哈希映射是单向的:key --> value
。如果您需要两个方向都快,那么您需要一个不同的数据结构(如Boost.Bimap)。
如果您只是希望查找工作期间并且线性性能正常,那么您可以使用std::find_if
:
auto it = std::find_if(hashmap.begin(), hashmap.end(),
[](auto const& pr){ return pr.second == 300; });
if (it != hashmap.end()) {
std::cout << "Key for 300: " << it->first;
}
基于查找值的std::unordered_map
中没有任何内容。
答案 1 :(得分:0)
没有您期望的直接访问。
其中一种方法是使用 nginx:
restart: always
build:
dockerfile: Dockerfile.dev
context: ./nginx
links:
- client:client
- api:api
ports:
- '8080:80'
。
std::find_if
此外,当您在无序映射中寻找值时,可能会有另一个键具有相似的值。
例如另一个元素//DATA
std::unordered_map<std::string,int> hashmap = {
{"Apple", 300},
{"Banana",60},
{"Orange",70}
};
//FIND BASED ON GIVEN INPUT
const auto& foundItem = std::find_if(hashmap.begin(),hashmap.end(),
[](const std::pair<std::string,int>& item)
{
return item.second == 300;
});
std::cout<<foundItem->first<<std::endl;
。如果您希望所有键的值为300。...
{"grape",300}