为什么std :: multimap没有[]运算符?

Kor*_*idu 6 c++ c++11

为什么std :: multimap没有[]运算符?

multimap(键类型为std :: string)的错误中,人们说"从中提取元素是没有意义的 - 每个索引都有多个值".对我来说,这是完全合理的,这就是为什么有平等的原因.

那么,为什么他们决定不为multimap添加[]运算符呢?

我觉得这是因为myMultiMap[key] = value处理起来会很复杂,但我真的不确定.

tit*_*tus 5

这可能是因为multiMap[key]可以表示许多元素,具体取决于具有相同键的插入数量,因此存在歧义。

运算符[]始终返回对任何可随机访问容器的提供索引处存在的元素的左值引用,因此在多重映射的情况下,同一键将有多个元素。

请注意,这与基于哈希表的容器(std::unordered_map、std::unordered_set)中的冲突不同,其中不同的键可以具有根据哈希函数计算的相同哈希值,导致元素落在同一桶中。