Итерация Sparse_hash_map

0

Я пытаюсь выяснить, как работает 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()... Хотя ничего подобного не содержится в документации.

Я не мог понять из предоставленных документов, и я не могу найти примеры...

Помощь была бы оценена. Спасибо.

  • 0
    В конце этой страницы приведен пример использования итератора: goog-sparsehash.sourceforge.net/doc/sparse_hash_map.html.
  • 0
    @carl Спасибо большое. Я пропустил это. В итоге я сделал что-то вроде int * state = it->first; double ** action_value = q_table[state]; // print whatever... Я полагаю, не самый эффективный, но работает для начинающих.
Теги:
iterator
hash
sparse-matrix
map

1 ответ

0
Лучший ответ

Предполагая, что он реализует интерфейс, соответствующий стандартной библиотеке, вы попробовали что-то вроде:

int * state = it->first;
double ** action_value = it->second;

Вы должны использовать стрелку, потому что обычно при разыменовании итератора вы получаете value_type элемента контейнера, а для ассоциативных контейнеров это обычно какая-то pair с first и second членами.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню