【发布时间】:2016-09-26 23:36:29
【问题描述】:
当前我有一个嵌套的哈希图。内部映射键的范围非常大,但外部映射键只有 10 个不同的可能字符串。
unordered_map<string, unordered_map<int, list<string>>> nestedHashMap;
切换到我会不会更有效率
vector<unordered_map<int, list<string>>>
并拥有自己的哈希函数
static int hashFunc(string stringToBeHashed){
switch(stringToBeHashed){
case "example1":
return 0;
.
.
.
case "example10":
return 9;
default:
return -1;
}
}
在每次查找之前做我自己的散列?在空间复杂度方面,由于 unordered_map 是基于节点的容器,我认为这种向量方法将为我节省一些 unordered_map 所需的每个节点内存。另外,我假设即使键是 int,内部哈希图也能保证最快的检索。密钥的范围很大,所以我认为在这里使用向量不会提高性能。正确的?任何 cmets/提示将不胜感激。
内存在这里不是问题。
【问题讨论】:
-
尝试各种变体并衡量它们的性能。然后回来告诉其他人,这样我们都可以学习。
-
当您使用它时,请考虑使用
vector<string>代替list<string>。结果可能会令人震惊和沮丧。
标签: c++ vector hashmap unordered-map