Ответ 1
Я бы рекомендовал GLib исключительно потому, что у него был хороший набор функций и он относительно зрелый, стабильный, портативный и широко используемый.
Возможный дубликат:
Класс контейнера/библиотека для C
Одна из основных причин использования С++ над C - это превосходно удобные контейнеры, которые предоставляет STL. Однако, если я хочу написать свой код в чистом C и не писать все свои контейнеры с нуля, какая у меня альтернатива?
Некоторые из тех, о которых я слышал (но никогда не использовали),
Любые мнения и/или опыты с контейнерами в чистом C (Ansi или иначе) были бы очень оценены.
Я бы рекомендовал GLib исключительно потому, что у него был хороший набор функций и он относительно зрелый, стабильный, портативный и широко используемый.
Вы или писатель библиотеки можете писать контейнеры и т.д. каждый раз, когда вы хотите использовать их для другого типа, возможно, помещая определения в гигантские макросы, или вы можете использовать void *
для контейнеров, теряя всякую надежду на безопасность типа и иногда некоторые показатели. (Функция C qsort
может быть значительно менее эффективной, чем шаблон С++ sort
.) Невозможно получить эквивалент контейнеров С++, итераторов и алгоритмов в C.
Я не знаю много о Glib, и ваша ссылка на разрозненные элементы из заголовков ядра Linux немного расплывчата. Список Linux, о котором вы упоминаете, вероятно, типичен для того, что вы получите: безопасности типа и набора хорошо написанных функций, которые будут называться по-разному для каждого типа данных. Быстрый просмотр iMatix не раскрывает никаких контейнеров.