Ответ 1
C не может иметь "точный эквивалент" STL, поскольку C не имеет шаблонов или классов.
Вам может быть интересна библиотека "Glib collections":
Возможный дубликат:
Стандартная библиотека структуры данных в C?
Имеет ли C какие-либо реализации структуры данных, похожие на С++ STL? В частности, ассоциативные контейнеры, хэш-карты или любая другая структура с приблизительно постоянным временем поиска?
Спасибо!
C не может иметь "точный эквивалент" STL, поскольку C не имеет шаблонов или классов.
Вам может быть интересна библиотека "Glib collections":
glib включает GHashTable
, которые являются в основном ассоциациями между ключами и значениями - что HashMap находится на С++.
Важное различие заключается в том, что вы должны использовать void*
для хранения произвольных данных, поскольку C не поддерживает шаблоны или дженерики. Недостатком является то, что компилятор не может проверить правильность вашего кода, и вы должны сами убедиться в правильности.
На самом деле вы можете реализовать свои собственные на C. Создайте структуру, дайте ей указатель на родителя и реализуйте функцию, которая возвращает указатель на экземпляр вашей структуры, и у вас есть свои классы в C. Вы можете зайти так далеко, насколько хотите, если у вас есть время, и вы знаете как это сделать.
C никогда не может иметь ничего подобного, потому что у него нет никаких необходимых функций, особенно шаблонов.