使用其值访问密钥
Accessing key using its value
我正在使用 std::map
,其中键和值都是 int
类型并且是唯一的:
std::map <int, int> myMap;
myMap[21] = 13;
是否可以通过值访问键?类似于以下内容:
myMap.Key[13];
哪个 return 21.
没有有效的方法来做到这一点。
您可以创建一个包装器 class,其中 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
我正在使用 std::map
,其中键和值都是 int
类型并且是唯一的:
std::map <int, int> myMap;
myMap[21] = 13;
是否可以通过值访问键?类似于以下内容:
myMap.Key[13];
哪个 return 21.
没有有效的方法来做到这一点。
您可以创建一个包装器 class,其中 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