使用其值访问密钥

时间:2017-04-14 04:42:48

标签: c++ stdmap

我使用的是std::map,其中键和值都是int类型并且唯一:

std::map <int, int> myMap;
myMap[21] = 13;

是否可以通过值访问密钥?类似于以下内容:

myMap.Key[13];

哪会返回21。

1 个答案:

答案 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