创建没有原始键值的哈希映射

时间:2013-12-11 13:31:52

标签: c++ hash

我有一个包含情侣列表的文件。每对包含一个64位整数,即在字符串上计算的哈希值,以及一个整数值。

我想在主内存中的哈希映射中加载列表。 然后使用原始字符串搜索值(我有哈希函数)。

例如,文件可以是:

keys values
78243536 12
38735342 20
32353498 18

如果我想搜索一个术语,例如“pippo”,我可以使用hashfunction("pippo")

问题是:我可以在这些哈希上使用std::map计算吗?如何在没有原始字符串的情况下直接在地图中插入哈希值?

2 个答案:

答案 0 :(得分:1)

映射是给定类型的键和值之间的映射。地图的界面定义为您可以迭代整个地图或使用地图中的键搜索特定元素。在您的情况下,您希望能够不使用地图中的键进行搜索,而是使用与此键相关的其他元素。您不能使用裸映射执行此操作,但您可以创建一个辅助函数来为您处理:

map<long long, int> my_map;

.... so some stuff ...

map<long long, int>::iterator find_by_string(const std::string& s) {
  return my_map.find(hash_code(s));
}

答案 1 :(得分:0)

散列操作是不可逆的(多个字符串可以具有相同的散列值),因此散列值不能用作唯一键,并且您尝试执行的操作是不可能的。