2011-05-15 49 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這是一個圖書館正是專注於提供多個(高效!)索引相同的數據