代码之家  ›  专栏  ›  技术社区  ›  Jonathan Mee

多重映射的每个元素是否同时包含键和值?

  •  9
  • Jonathan Mee  · 技术社区  · 6 年前

    我无法想象这还没有被问到,但我找不到它。

    每个元素 multimap 包含其值 它的钥匙?

    这就是 多重映射 看起来更像这样:

    map<key, vector<value>>
    

    或者更像这样:

    vector<pair<key, value>>
    
    1 回复  |  直到 6 年前
        1
  •  11
  •   Yakk - Adam Nevraumont    6 年前

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

    您可以判断,因为迭代返回一个稳定的非分配引用 std::pair<Key const, Value>

    此外,键可以比较相等,但可以比较不同。多重映射允许您将“额外数据”存储在该键中,而该键不是排序的一部分,之后您会将其取回,并将其与该值关联。

    将多重映射实现为 std::map<Key, std::vector<Value>> 是一个有时比使用 std::multimap<Key,Value> 。尤其是对于每个键有许多值,它将更高效地使用内存,具有更好的局部性等。如果要统一执行,则对其进行迭代可能会更困难,但如果要对由键聚集的对象进行迭代,则更容易。