我使用的是std::map
,其中键和值都是int
类型并且唯一:
std::map <int, int> myMap;
myMap[21] = 13;
是否可以通过值访问密钥?类似于以下内容:
myMap.Key[13];
哪会返回21。
答案 0 :(得分:0)
没有有效的方法可以做到这一点。
您可以为键值对创建一个包含std::map
的包装类,为值键对创建一个std::multimap
(如果可以保证值,则为std::map
这是独一无二的。)这比下一个解决方案更有效,但使用的内存增加了2倍。
以下内容不使用任何额外内存,但对于地图,它是 O(N)而不是 O(log N):
const int compare = 13;
auto it = std::find_if(myMap.cbegin(), myMap.cend(), [compare](const auto& value) {
return value.second == compare;
});
if (it != myMap.cend())
; // found key