2013-10-31 21 views
0

我擁有POD結構實例形式的數據。在「正常」條件下,我需要通過唯一ID訪問它們,目前通過std::map。但是,如果出現問題,我需要按POD結構的特定成員提供的順序遍歷數據。關於值的隊列式屬性的聯合容器

我不想在發生錯誤時將地圖的所有數據集複製到優先級隊列中 - 這看起來很貴。

我試着在std::map上運行std::make_heap,但是它甚至沒有編譯,因爲不能減去map的迭代器。

排序鍵會定期更改,因此將數據保存在優先級隊列中並僅存儲指針在映射中似乎是不可行的,尤其是在通過映射(典型用例)訪問變得更多時昂貴的間接。

另一種方式,即將指針存儲在單獨的數據結構中,可以根據需要進行heapified似乎是可行的,但同步可能容易出錯。

std庫中有什麼東西,boost或tbb會完成我想要的嗎?

+0

不知道它是否會有所幫助,但您是否檢查了[boost :: multi-index庫](http://www.boost.org/doc/libs/1_54_0/libs/multi_index/doc/index.html )? – rodrigo

+0

@rodrigo除了'const'的一些有趣的事情,這就是它。發佈它作爲答案,我會接受它。 – arne

回答