具有动态值的哈希表

时间:2015-06-02 04:53:45

标签: c++ c++11 hashtable unordered-map

我正在尝试创建一个在给定算法运行时动态更新的哈希表。我的代码是:

#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。可变的价值?

1 个答案:

答案 0 :(得分:4)

如果您要替换与键0对应的值,请使用operator[]来执行此操作。

if(hashtable[0]==0) {
    hashtable[0] = 1;
}

unordered_map::emplace只会在地图中已存在密钥时插入一个条目,而在您的示例中并非如此。