【发布时间】:2023-01-14 22:30:40
【问题描述】:
我有一个std::unordered_multimap,我想用给定的键 k 遍历所有元素,而不遍历整个地图,但最好只遍历匹配的项目。
虽然我可以在有序的 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
【问题讨论】:
-
也许你错过了
equal_range -
虽然这是最坏的情况
O(N)其中N是地图的大小 -
@463035818_is_not_a_number 最坏的情况是每个元素的哈希值相同,我不知道可以解决这种情况的哈希结构的任何实现
标签: c++ stl containers unordered-multimap