我有一个std::unordered_multimap
,并且想要用给定的键k迭代所有的元素,而不是迭代整个Map,而是最优地只遍历匹配的元素。
虽然我可以在有序的std::multimap
中使用upper_bound执行此操作,但我找不到find()
后面跟随向前迭代直到键不同为止将遍历键k
的所有示例的规范,因为find(k)
仅保证返回具有键k
的任意项
编辑:我知道在我的特定情况下,我可以用一个std::unordered_map〈Key,std::vector〉来代替,它会匹配我所有的需求,这个问题更多的是出于好奇。
还是我错过了什么?
我的消息来源是:https://en.cppreference.com/w/cpp/container/unordered_multimap/find
1条答案
按热度按时间dfty9e191#
unordered_map::equal_range
的cppreference示例:输出:
复杂性是
平均情况下与密钥的元素数量呈线性,最差情况下与容器大小呈线性。
注意,复杂性在于获得迭代器,一旦获得迭代器,循环就是所需的
O(count(k))
。