Что такое чистая C-альтернатива контейнерам STL?

Возможный дубликат:
Класс контейнера/библиотека для C

Одна из основных причин использования С++ над C - это превосходно удобные контейнеры, которые предоставляет STL. Однако, если я хочу написать свой код в чистом C и не писать все свои контейнеры с нуля, какая у меня альтернатива?

Некоторые из тех, о которых я слышал (но никогда не использовали),

  • Glib
  • Библиотека стандартных функций iMatix
  • разрозненные элементы из заголовков ядра Linux (например, list)

Любые мнения и/или опыты с контейнерами в чистом C (Ansi или иначе) были бы очень оценены.

Ответ 1

Я бы рекомендовал GLib исключительно потому, что у него был хороший набор функций и он относительно зрелый, стабильный, портативный и широко используемый.

Ответ 2

Вы или писатель библиотеки можете писать контейнеры и т.д. каждый раз, когда вы хотите использовать их для другого типа, возможно, помещая определения в гигантские макросы, или вы можете использовать void * для контейнеров, теряя всякую надежду на безопасность типа и иногда некоторые показатели. (Функция C qsort может быть значительно менее эффективной, чем шаблон С++ sort.) Невозможно получить эквивалент контейнеров С++, итераторов и алгоритмов в C.

Я не знаю много о Glib, и ваша ссылка на разрозненные элементы из заголовков ядра Linux немного расплывчата. Список Linux, о котором вы упоминаете, вероятно, типичен для того, что вы получите: безопасности типа и набора хорошо написанных функций, которые будут называться по-разному для каждого типа данных. Быстрый просмотр iMatix не раскрывает никаких контейнеров.