使用Heap查找地图的顶部元素

时间:2011-05-15 21:38:38

标签: c++

我有unordered_hashmap将字符串(比如personName或SSN)映射到struct Attributes,该annualIncome mapOrganizationA具有该人的许多属性,包括mapOrganizationB。有许多这样的哈希映射对应于不同的组织,例如min-heap,{{1}}等。我需要找到具有前k年收入的人(具有属性)。我正在考虑使用带有k节点的最小堆(以最低工资作为root),这样我就可以逐个扫描地图,当前元素的收入大于最小堆的根, root可以更新。这是从不同地图获得top-k的正确方法吗?在STL中是否有{{1}}数据结构我可以使用。

1 个答案:

答案 0 :(得分:2)

您可以使用make_heap, push_heap, pop_heap, sort_heap, is_heap将任何非关联容器(或序列,实际上)视为堆。

这不适合你很好地映射,但我认为没有什么会阻止你将值(或指针/引用)存储在里面,比如说,为此目的的列表?

另外,也许看看 Boost.MultiIndex 这是一个精确专注于在同一数据上提供多个(高效!)索引的库