Я пытаюсь выяснить, как работает google sparse_hash_map. У меня есть правильная декларация и ее заполнение. Однако у меня возникают проблемы с повторением и отображением карты. Я хочу напечатать пары, чтобы проверить правильность вычислений. Мое выражение:
sparse_hash_map<int*, double **, hash<int*>, eqstr> q_table;
Я пытаюсь сделать итерацию в цикле for, поскольку
for(sparse_hash_map<int*, double **, hash<int*>, eqstr>::iterator it = q_table.begin(); it != q_table.end(); ++it)
Я пробовал делать int* key = it[0]
но не работает, не делает int* key = it.first
. Даже попробовал int* key = it.key()
... Хотя ничего подобного не содержится в документации.
Я не мог понять из предоставленных документов, и я не могу найти примеры...
Помощь была бы оценена. Спасибо.
Предполагая, что он реализует интерфейс, соответствующий стандартной библиотеке, вы попробовали что-то вроде:
int * state = it->first;
double ** action_value = it->second;
Вы должны использовать стрелку, потому что обычно при разыменовании итератора вы получаете value_type
элемента контейнера, а для ассоциативных контейнеров это обычно какая-то pair
с first
и second
членами.
int * state = it->first; double ** action_value = q_table[state]; // print whatever...
Я полагаю, не самый эффективный, но работает для начинающих.