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 ,它会更有效地存储内存,具有更好的局部性等。如果你想均匀地迭代它可能会更棘手,但如果你想迭代按键聚集的东西它是更简单。
我无法想象没有人问过这个问题,但我找不到它。
multimap
的每个元素是否包含其值 和 其键?
也就是说 multimap
的内部结构更像这样:
map<key, vector<value>>
或者更像这样:
vector<pair<key, value>>
每个元素都包含其键和值。
你可以看出,因为迭代 returns 是对 std::pair<Key const, Value>
.
更重要的是,Keys可以比较相等但可以不同。 multimap 允许您将 "extra data" 存储在不属于排序的那个键中,之后您将取回它并且它将与该值相关联。
将多图实现为 std::map<Key, std::vector<Value>>
是一种有时比使用 std::multimap<Key,Value>
更好的选择。特别是每个键 many-values ,它会更有效地存储内存,具有更好的局部性等。如果你想均匀地迭代它可能会更棘手,但如果你想迭代按键聚集的东西它是更简单。