Подтвердить что ты не робот

C Языковые стандартные коллекции Где они?

Я посвятил себя изучению C сейчас, я хорошо разбираюсь в Python/PHP/ Bash, но я решил, что ограничусь тем, что не свободно говорю на C. Однако я не могу представить работу на языке без списков и хэши, может быть, я просто прыгаю с оружием, но, безусловно, есть "стандартные" библиотеки коллекций. Я не вижу в GNU стандартного lib, хотя любые предложения?

4b9b3361

Ответ 1

Нет никакого "стандартного" набора классов сбора для C. Многие люди просто откатывают свои собственные по мере необходимости.

Но, конечно, есть некоторые библиотеки, заполняющие этот пробел. Например, glib предлагает связанные списки, хеш-таблицы и различные типы деревьев.

Ответ 2

C - более низкий уровень, чем вы привыкли. Нет стандартных коллекций в C вне массива.

Ответ 3

Возможно, вам стоит попытаться заглянуть в glib. Хотя это не стандарт в том же смысле, что и STL для С++, это проверенная библиотека и используется во многих приложениях.

http://library.gnome.org/devel/glib/2.22/

Ответ 4

Нет стандарта, но есть превосходная альтернатива, которая намного проще, чем glib: Dave Hanson C Интерфейсы и реализации. Он включает в себя несколько эффективных абстракций коллекции и ряд других полезных модулей. Программное обеспечение бесплатно, и книга стоит покупать.

Ответ 5

В C. На самом деле нет стандартных коллекций в C. Будучи языком очень низкого уровня (по сравнению с С++ и более "современными" языками)

С++ добавляет их через стандартную библиотеку шаблонов. Большинство "коллекций", таких как хэширование и списки, основаны на объектно-ориентированных или общих методах программирования, недоступных (кроме условного) в C.

Ответ 6

Стандартных (как в части стандартного стандарта ISO) контейнеров нет, по крайней мере, не с C99. Я видел несколько сторонних попыток; все имели некоторую степень потери или другую.

C имеет очень примитивный и скудный инструментарий; Я сравнил программирование на C, чтобы построить дом с ничего, кроме ружья и молотка коготь.

Ответ 7

В зависимости от вашей системы вы можете найти то, что ищете в sys/queue.h, который включает в себя "реализации отдельно связанных списков, двусвязных списков, простых очередей и хвостовых очередей".