多图的每个元素都包含键和值吗?

时间:2018-04-06 14:52:30

标签: c++ dictionary key key-value multimap

我无法想象没有问过这个问题,但我没有找到任何运气。

multimap的每个元素是否包含其值的键?

multimap的内部结构看起来更像是这样:

map<key, vector<value>>

或更像这样:

vector<pair<key, value>>

1 个答案:

答案 0 :(得分:11)

每个元素都包含其键和值。

你可以告诉,因为迭代会返回一个稳定的非分配引用{.1}}。

此外,Keys可以比较相同但不同。 multimap允许您在该Key中存储“额外数据”而不是订购的一部分,之后您将获得该数据并将其与该值相关联。

将多地图实现为std::pair<Key const, Value>是一种有时比使用std::map<Key, std::vector<Value>>更好的选项。特别是每个键有很多值,它会更有内存效率,有更好的局部性等等。如果你想统一这样做,迭代它可能会比较棘手,但是如果你想迭代被键聚集的东西就更容易了。