我有一个unordered_hashmap,它将一个字符串(比如personName或SSN)映射到一个struct Attributes,其中包含person的许多属性,包括annualIncome。有许多这样的散列映射对应于不同的组织,如mapOrganizationA,mapOrganizationB等。我需要找到年收入前k位的人(具有属性)。我在考虑使用带有k个节点的min-heap (以最低工资为根),这样我就可以逐个扫描映射,如果当前元素的收入超过min-heap的根,则根可以更新。这是从不同地图中获取top-k的正确方法吗?在STL中有没有我可以使用的min-heap数据结构?
发布于 2011-05-16 05:45:08
您可以使用make_heap, push_heap, pop_heap, sort_heap, is_heap将任何非关联容器(或序列,实际上)视为堆。
这不适合您的映射,但我假设没有什么会阻止您将值(或指向这些值的指针/引用)存储在列表中,例如,用于此目的的列表?
另外,也许可以看看,它是一个专注于提供多个(高效!)相同数据上的索引
https://stackoverflow.com/questions/6011435
复制相似问题