我的目標是創建一個有效的結構來存儲一個矩陣的最相關的條目,這個條目在沒有內存限制的世界中大約爲10^5 x 10^5並充滿雙打。矩陣是對稱的,所以它實際上只包含(10^10)/ 2個值。最好的存儲和散列方式<int, int> key(C++)
我需要在我的模擬中多次訪問條目,所以快速檢索是至關重要的。
爲了保持結構的可管理性,我將刪除不太可能使用的成員。如果索引是(int_x1,int_x2),我經常想要刪除包含例如x1的所有對。
該任務的最佳結構或結構是什麼?什麼是兩個整數的好散列?
爲了便於攜帶,我想避免使用Boost。我目前正在程序的其他地方使用TR1的unordered_map。我正在考慮使用密鑰對再次使用unordered_map,但我不確定如何以這種方式高效地刪除條目,並且我不知道什麼是好的哈希函數。
我是一個開始的程序員,所以請陳述明顯。
您是否還需要像所有x1成員一樣頻繁地刪除所有x2成員? – jmucchiello 2009-11-02 23:33:25
您是否考慮過使用標準稀疏矩陣存儲方案,如CSR?根據您需要在矩陣上執行的操作,它可能正常工作。 – mch 2009-11-02 23:40:41
爲了便於攜帶,你想避免提升?增強是相當便攜,並有輕量級,可以做你所需要的。 – Patrick 2009-11-03 09:22:47