我正在尝试创建一个在给定算法运行时动态更新的哈希表。我的代码是:
#include <stdio.h>
#include <unordered_map>
int main()
{
std::unordered_map<int, int> hashtable;
hashtable.emplace(0,0);
if(hashtable[0]==0)
{
hashtable.emplace(0,1);
}
for (auto itr = hashtable.begin(); itr != hashtable.end(); itr++)
{
printf("%d : %d", (*itr).first, (*itr).second);
}
return 0;
}
奇怪的是,在尝试覆盖hashtable[0]
的值后,它保持不变。有没有办法用ovewritable制作哈希表ie。可变的价值?
答案 0 :(得分:4)
如果您要替换与键0
对应的值,请使用operator[]
来执行此操作。
if(hashtable[0]==0) {
hashtable[0] = 1;
}
unordered_map::emplace
只会在地图中已存在密钥时插入一个条目,而在您的示例中并非如此。