#c #hashtable #glib
#c #хэш-таблица #glib
Вопрос:
При использовании GLib 1.2 GHashTable
с g_hash_table_foreach()
методом безопасно ли удалять элементы с помощью g_hash_table_remove()
метода?
Я знаю, что Glib 2.0 предоставляет g_hash_table_foreach_steal()
метод, но мы застряли с 1.2 для нашей сборки на работе.
Ответ №1:
Ну, это не разрешено в текущем API, поэтому я был бы очень удивлен, если бы такая функциональность была в 1.2.
Комментарии:
1. Это единственный способ сохранить отдельный список ключей и удалить их впоследствии? Это вообще не кажется очень чистым.
2. @brice: Это один из способов, и в нем нет ничего плохого. Другим способом было бы создать новую хэш-таблицу и добавить в нее пары ключ-значение, которые вы хотите сохранить по ходу работы. Затем в конце замените исходную хэш-таблицу на новую.
3. Спасибо за ответ и ваши последующие действия. Вы правы, конечно, нет ничего плохого в том, чтобы делать это в любом случае. Я думаю, что работа с языками более высокого уровня, такими как Python и Clojure, дала мне действительно ленивые привычки!