2011-05-15 45 views
3

地图的顶部元素我有一个unordered_hashmap映射一个字符串(说PERSONNAME或SSN)到具有人包括annualIncome的许多属性的structAttributes。有许多对应于不同组织的哈希映射,如mapOrganizationA,mapOrganizationB等。我需要查找具有最高k年收入的人员(具有属性)。我正在考虑用k-nodes(以最低工资为根)的最小堆,以便我可以逐一扫描地图,当前元素的收入超过最小堆的根,根可以更新。这是从不同地图获得top-k的正确方法吗?我可以利用STL中的min-heap数据结构。发现使用堆

回答

2

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

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

也或许看Boost.MultiIndex这是一个图书馆正是专注于提供多个(高效!)索引相同的数据