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

Finding top elements of a map using Heap

本文关键字:顶部 元素 地图 查找      更新时间:2023-10-16

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

您可以使用

make_heappush_heappop_heapsort_heapis_heap将任何非关联容器(或序列,实际上是)视为堆。

这不适合您的地图,但我认为没有什么可以阻止您将值(或指向这些值的指针/引用)存储在其中,例如为此目的的列表?

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