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