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

Does Each Element of a multimap Contain Both the Key and Value?

我无法想象没有人问过这个问题,但我找不到它。

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

也就是说 multimap 的内部结构更像这样:

map<key, vector<value>>

或者更像这样:

vector<pair<key, value>>

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

你可以看出,因为迭代 returns 是对 std::pair<Key const, Value>.

的稳定 non-allocating 引用

更重要的是,Keys可以比较相等但可以不同。 multimap 允许您将 "extra data" 存储在不属于排序的那个键中,之后您将取回它并且它将与该值相关联。

将多图实现为 std::map<Key, std::vector<Value>> 是一种有时比使用 std::multimap<Key,Value> 更好的选择。特别是每个键 many-values ,它会更有效地存储内存,具有更好的局部性等。如果你想均匀地迭代它可能会更棘手,但如果你想迭代按键聚集的东西它是更简单。