2015-06-02 2 views
1

Я пытаюсь создать хеш-таблицу, которая динамически обновляется по мере выполнения заданного алгоритма. Мой код:hashtable с динамическими значениями

#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, т.е. изменяемые значения?

ответ

4

Если вы хотите заменить значение, соответствующее клавише 0, используйте для этого operator[].

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

unordered_map::emplace будет только вставить запись, если ключ не существует на карте, которая не так в вашем примере.

Смежные вопросы