我正在實施一種演算法,該演算法檢查網格中的節點是否具有特定值。要存盤有關我已經檢查過的節點的資訊,我想使用 unordered_map 并將指向該節點的指標作為鍵。然后我可以簡單地使用 umap.find(pointer) 來查看節點是否已經被檢查并跳過它。這樣我就可以在 O(n) 時間內完成它。
但是我不需要實際存盤地圖的值。密鑰本身就是足夠的資訊。那么 std::unordered_map 甚至是正確的解決方案嗎?如果是這樣,我應該為“值”欄位添加什么來最大化性能?我有一個 32 位嵌入式系統,所以我想把 uint32_t 或 uint_fast32_t 放在那里。
tl;博士:
- std::unordered_map 是存盤沒有值的鍵的正確工具嗎?
- 原生散列函式是否適用于指標?或者你會建議一個不同的 hashin 演算法嗎?
- 如果使用 std::unordered_map 來優化性能,我將什么作為地圖的“價值”?
uj5u.com熱心網友回復:
是
std::unordered_map存盤沒有值的鍵的正確工具嗎?
我會std::unordered_set在這些情況下使用 a 。
原生散列函式是否適用于指標?
是的。它很可能只是從指向std::size_t.
如果使用 std::unordered_map 來優化性能,我將什么作為地圖的“價值”?
如果使用 astd::unordered_set代替,則沒有值,只有指標。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/318810.html
下一篇:Python的記憶體行為
