使用堆查找地图的顶部元素
Finding top elements of a map using Heap
我有一个unordered_hashmap
,它将字符串(例如 personName 或 SSN)映射到具有该人许多属性(包括annualIncome
)的struct
Attributes
。有许多这样的哈希映射对应于不同的组织,例如mapOrganizationA
,mapOrganizationB
等。我需要找到年收入最高的人(有属性)。我正在考虑使用带有k节点的最小堆(以最低工资为根),这样我就可以一一扫描地图,当前元素的收入超过最小堆的根,根可以更新。这是从不同地图获取 top-k 的正确方法吗?STL中是否有我可以利用的min-heap
数据结构。
您可以使用
。
make_heap
、push_heap
、pop_heap
、sort_heap
、is_heap
将任何非关联容器(或序列,实际上是)视为堆。
这不适合您的地图,但我认为没有什么可以阻止您将值(或指向这些值的指针/引用)存储在其中,例如为此目的的列表?
另外,也许看看Boost.MultiIndex,这是一个专注于在同一数据上提供多个(高效!)索引的库
相关文章:
- Mongodb c++驱动程序:如何查询元素的数组
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 使用strcpy将char数组的元素复制到另一个数组
- 使用不带参数的函数访问结构元素
- 给定n个元素的m个集合.在C++中找到出现在最大集合数中的元素
- C++如何通过用户输入删除列表元素
- lower_bound()返回最后一个元素
- 基于多个条件处理地图中的所有元素
- 调整大小后指向元素值的指针unordered_map有效?
- 使用std::transform将一个范围的元素添加到另一个范围中
- 使用函数"remove"删除重复元素
- 具有最大子序列大小的序列,每个元素都相同
- 如何实现唯一 id 队列,其中元素可以在 C++ 中"bumped"到顶部?
- 无法获取已填充堆栈<char>的顶部元素
- 将顶部堆栈元素传输到第二个堆栈的第一个
- 如何获得向量队列的前部或顶部元素
- 如何从priority_queue中删除不在顶部的元素
- 如何在不重新建立堆不变量的情况下有效地替换堆的顶部元素
- 排序的数据结构,用于按顺序迭代、有序推送和删除(仅从顶部开始 N 个元素)
- 使用堆查找地图的顶部元素