我无法想象没有问过这个问题,但我没有找到任何运气。
multimap
的每个元素是否包含其值和的键?
multimap
的内部结构看起来更像是这样:
map<key, vector<value>>
或更像这样:
vector<pair<key, value>>
答案 0 :(得分:11)
每个元素都包含其键和值。
你可以告诉,因为迭代会返回一个稳定的非分配引用{.1}}。
此外,Keys可以比较相同但不同。 multimap允许您在该Key中存储“额外数据”而不是订购的一部分,之后您将获得该数据并将其与该值相关联。
将多地图实现为std::pair<Key const, Value>
是一种有时比使用std::map<Key, std::vector<Value>>
更好的选项。特别是每个键有很多值,它会更有内存效率,有更好的局部性等等。如果你想统一这样做,迭代它可能会比较棘手,但是如果你想迭代被键聚集的东西就更容易了。