如何确定一个映射是否包含给定值?

How can I find out if a map contains a given value?

本文关键字:包含 是否 映射 一个 何确定      更新时间:2023-10-16

我想知道给定的值是否存在于映射中。获得相应的键也会很好,但不是必需的。

bool map::contains(string value);

除了迭代整个映射并将每个值与给定值进行比较之外,是否有一种简单的方法可以做到这一点?为什么STL中没有相应的方法?

std::map仅按键索引其元素;它不按值对它们进行索引。因此,如果不遍历映射,就无法根据元素的值查找元素。

看看Boost。Bimap:

提振。Bimap是一个c++的双向映射库。与提升。Bimap可以创建关联容器,其中两种类型都可以用作键。bimap<X,Y>可以看作是std::map<X,Y>std::map<Y,X>的组合。

使用它非常简单,尽管您当然需要考虑是否允许重复值的问题。

另外,参见是否有Boost。c++11中的bimmap替代方案?