История изменений
Исправление i-rinat, (текущая версия) :
А ты ими реально пользуешься?
Ага. Хеш-таблицы, печать в динамически выделяемую строку (a la asprintf), всякие мелочи типа разрезания строк по символам, сборка строк (типа StringBuilder), синхронные и асинхронные очереди. Почти для всего, что можно придумать, в GLib уже есть функции-помощники.
Например, там есть g_file_replace_contents(), которая по описанию сначала пишет во временный файл, а потом его переименовывает. Или, скажем, g_file_get_contents(), чтобы не возиться с вызовами lstat (или, как некоторые делают, fopen, fseek, ftell, fseek, fread, fclose).
Upd. Если не твикать параметры, GLib может оказаться не медленнее std::map или std::unordered_map: Библиотека алгоритмов и структур данных для C (комментарий). С твиками unordered_map рвёт GHashTable (там по теме дальше есть подробности).
Исходная версия i-rinat, :
А ты ими реально пользуешься?
Ага. Хеш-таблицы, печать в динамически выделяемую строку (a la asprintf), всякие мелочи типа разрезания строк по символам, сборка строк (типа StringBuilder), синхронные и асинхронные очереди. Почти для всего, что можно придумать, в GLib уже есть функции-помощники.
Например, там есть g_file_replace_contents(), которая по описанию сначала пишет во временный файл, а потом его переименовывает. Или, скажем, g_file_get_contents(), чтобы не возиться с вызовами lstat (или, как некоторые делают, fopen, fseek, ftell, fseek, fread, fclose).