Нужна библиотека общего назначения, чистая C
Не могли бы вы порекомендовать хорошую библиотеку контейнеров данных общего назначения для C (чистый C, а не С++)?
Мне просто нужны базовые структуры, такие как динамические массивы, хэш-таблицы и т.д.
(Примечание: под "хорошим" я подразумеваю быстрый + элегантный интерфейс).
Ответы
Ответ 1
Я думаю, что Dave Hanson C Интерфейсы и реализации квалифицируется как быстрый, так и элегантный. Он включает в себя множество различных типов контейнеров, некоторую строковую обработку, арифметику с несколькими точками, исключения, пару различных менеджеров памяти. Хороший материал.
Там есть книга, но вам не нужно ее покупать, чтобы использовать программное обеспечение.
Ответ 2
Не достаточно ли Glib для ваших нужд?:-)
developer.gnome.org/glib
Ответ 3
Время автономной работы Apache
http://apr.apache.org/
Включает модули для этих областей.
- Определения платформы
- Распределение внутренней памяти
- Атомные операции
- Управление динамическими объектами
- Функции для управления средой
- Коды ошибок
- Информация о файле
- Функции обработки ввода-вывода файлов
- Соответствующие функции имени файла
- Различные подпрограммы библиотеки
- Анализ аргументов команды
- Глобальные процедуры блокировки
- Таблицы Hash
- Общие правила библиотеки библиотеки
- Планы MMAP (Карта памяти)
- Сетевые процедуры
- Процедуры опроса
- Функции пула памяти
- Процедуры переносимости
- Процедуры блокировки процесса
- Случайные функции
- Реализация макросов с кольцом
- Процедуры общей памяти
- Обработка сигналов
- Строковые процедуры
- Внутренние функции поддержки APR
- Функции таблицы и массива
- Условие Variable Routines
- Механизмы потока Mutex
- Темы и функции процесса
- Процедуры блокировки чтения/записи
- Временные ряды
- Службы идентификаторов пользователей и групп.
Ответ 4
Я ранее рекомендовал MemSL, но сайт и компания, похоже, вымерли. Я бы предложил glib, он охватывает многие из тех же функций и широко поддерживается и используется на протяжении всего Сообщества Linux.
Я использовал MemSL при реализации ядра x86, и я нашел его общедоступным, надежным и без ошибок.
Из описания:
C Обзор библиотеки структур памяти (MemSL)
Библиотека структур памяти, короткая MemSL, представляет собой библиотеку полезных подпрограмм, позволяющую эффективно использовать сложные структуры данных в C. MemSL содержит подпрограммы для управления:
- Многомерные динамически распределенные массивы
- Одиночные списки
- Списки с двойной связью
- Циклические связанные списки
- Вырезать, скопировать и вставить со связанными списками
- Несколько позиционных указателей для связанных списков.
- Стеки
- Очередь
- Dequeues
- Наборы
- Сумки
- Таблицы
- Словари
- Таблицы Hash с отдельными цепочками
- Таблицы Hash с пользовательским пейджингом
- Таблицы Hash с динамическим подкачкой
- Деревья двоичного поиска
- Деревья резьбового двоичного поиска
- Сбалансированные двоичные деревья поиска AVL
- AVL сбалансированные резьбовые двоичные деревья поиска
- Приоритетные кучи
- Полностью динамические очереди поиска приоритетов
Ответ 5
http://home.gna.org/gdsl/
Ответ 6
Вы также можете проверить iMatix SFL, чтобы процитировать их веб-страницу:
SFL (стандартная библиотека функций) от iMatix является переносной функцией библиотека для программ C/С++. SFL является результатом многолетнего развития, и предоставляется в виде программного обеспечения с открытым исходным кодом в интересах Интернет-сообщество. SFL написан на ANSI C и портирован в MS-DOS, Windows, OS/2, Linux и другие UNIX-системы (IBM AIX, SunOS, HP/UX, Solaris, NetBSD, FreeBSD, SCO OpenServer, > Digital UNIX) и Digital OpenVMS. Он поставляется с полными источниками и документация в формате HTML.
SFL предоставляет около 450 функций, которые охватывают следующие области:
- Сжатие, шифрование и кодирование;
- Преобразование и форматирование Datatype;
- Даты, времена и календари;
- Доступ к каталогам и средам;
- Группы пользователей и процессов;
- Инвертированные индексы растровых изображений;
- Таблицы символов;
- Файлы сообщений об ошибках;
- Конфигурационные файлы;
- Управление и поиск строк;
- Доступ к файлам;
- Доступ к интернет-сокету;
- Интернет-программирование (MIME, CGI);
- Доступ к SMTP (электронной почте);
- Серверное (пакетное) программирование;
- Трассировка программы.
SFL - бесплатное программное обеспечение, которое вы можете использовать и распространять для частных или коммерческих в соответствии с Лицензионное соглашение SFL.
Подробнее о самом API, см. здесь.
Ответ 7
Sglib "- это общая библиотека для C, которая была вдохновлена стандартной библиотекой шаблонов из С++"
Ответ 8
Позвольте мне добавить:
http://libslack.org
(... и добавить к этому: libcx)
Ответ 9
Вам может быть интересно посмотреть на qLibc.
http://en.wikipedia.org/wiki/Qlibc
http://www.qdecoder.org/qlibc/
Это универсальная полная библиотека C/С++, которая включает в себя все виды контейнеров и общие библиотечные процедуры.