使用其值访问密钥

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