0
我有一個問題:一個值,它可以與兩個不同的鍵相關聯。例如:如何用2個鍵實現哈希表?
- UINT64 KEY1 - >值
- UINT32 KEY2 - >值
因此,一個查詢可以是雙重的:
table.find(UINT64 KEY1)或
表。 find(uint32 key2)
key1和key2是完全獨立的。 有沒有可能通過兩個鍵來實現一張表而不需要重複項目?
一個可能的解決方案(psedocode):
class TwoKeyHashTable {
Value find(uint64);
Value find(uint32);
insert(key1, key2, value) {
insert_into_table(key1, value);
insert_into_table(key2, value);
}
struct Item {
uint64 key1;
uint32 key2;
Value value;
} *table;
};
但是這個解決方案在雙打表項數。我有數以億計的項目,並且我想將整個表保存在內存中,所以我在問是否存在更多的內存有效性?
歡迎來到SO!你正在談論實現這個數據結構,但沒有說明你願意使用哪種語言。 還要考慮到數以億計的項目可能不會全部適合內存。 – idoby
C++。我已經實現了10多個專門的哈希表,所以我不會遇到低級別實現的問題。只是想法或算法就足夠了...... :-) – Marek
請顯示您的代碼。你不可能以這種方式得到答案。 – idoby