Контейнер Класс /Библиотека для C [закрыто]

Кто-нибудь знает какие-либо библиотеки C-контейнеров? Я ищу что-то, что дает стандартные реализации связанных списков, массивов, хеш-таблиц и т. Д., Почти так же, как это делает C ++ STL. Ключевые проблемы:

  1. Клиентский код должен иметь возможность создавать контейнеры для нескольких различных типов данных без изменения библиотеки.
  2. Интерфейс для создания и использования контейнеров должен быть интуитивно понятным.
72 голоса | спросил Howard May 20 42008vEurope/Moscow11bEurope/MoscowThu, 20 Nov 2008 18:19:24 +0300 2008, 18:19:24

8 ответов


0

Я только что натолкнулся на SGLIB, когда искал C-реализацию контейнера карты /словаря. К сожалению, нет карты, но, похоже, она включает в себя контейнеры, о которых вы спрашивали. Я понятия не имею, насколько это хорошо.

http://sglib.sourceforge.net .

ответил Nick Van Brunt 20 42008vEurope/Moscow11bEurope/MoscowThu, 20 Nov 2008 22:03:15 +0300 2008, 22:03:15
0

Чак Фалконер имеет приличную библиотеку хешей, написанную на C, с интерфейсом C ++, нажмите на hashlib.zip на веб-странице для загрузки.

Бен Пфафф имеет очень хорошую и чрезвычайно хорошо документированную библиотеку двоичных и сбалансированных деревьев, GNU libavl , которая реализует большинство основных древовидных структур, включая деревья двоичного поиска, деревья AVL, красно-черные деревья и резьбовые версии каждого.

libavl лицензируется по лицензии LGPL (начиная с версии 2.0.3), hashlib - это GPL.

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

ответил Robert Gamble 20 42008vEurope/Moscow11bEurope/MoscowThu, 20 Nov 2008 18:45:10 +0300 2008, 18:45:10
0

Sglib - превосходная библиотека общих структур данных. В настоящее время библиотека предоставляет общую реализацию для:

  • сортировка массивов
  • связанные списки
  • отсортированные связанные списки
  • двойные связанные списки
  • красно-черные деревья
  • хешированные контейнеры

Это очень быстро. Быстрее этого бойка. Это вдохновлено стандартной библиотекой шаблонов. Загрузить здесь

Другим решением является Привлекательное программное обеспечение Chaos . Макро библиотека C:
kbtree.h: эффективная библиотека B-деревьев на C.
khash.h: быстрая и легковесная библиотека хеш-таблиц на C.
kvec.h: простой векторный контейнер в C.

Кулеш Шанмугасундарам представляет общий связанный список ядра Linux и общую хэш-таблицу на основе Linux Связанный список с ядром.

Программное обеспечение Sglib и Привлекательный Хаос и Linux Kernel Linked List являются библиотеками макросов C. Использование void* для реализации универсальных контейнеров в C может быть неэффективным. Макросы C имитируют шаблоны C ++ и так же эффективны, как и шаблоны C ++.

ответил Lear 24 Mayam09 2009, 06:46:51
0

Как насчет ccl? Это библиотека контейнеров для C. Может быть, она лучше всего подходит для вас. Вы можете увидеть https://code.google.com/p/ccl/. Наслаждайтесь этим.

ответил pwrlove 6 Mayam13 2013, 06:05:41
0

Я использую библиотеку, которую я вырастил из книги Хэнсона "Интерфейс и реализации C". Его источник доступен для скачивания на

веб-сайт cii book

Все является абстрактным типом данных. Есть Список, Набор, Таблица (карта).

ответил navicore 22 62008vEurope/Moscow11bEurope/MoscowSat, 22 Nov 2008 19:04:09 +0300 2008, 19:04:09
0

#include "queue.h", чтобы получить доступ к реализациям односвязных списков, односвязных оконечных очередей, списков и оконечных очередей.

Я нашел общий кеш для хранения произвольных объектов в памяти от DJ Бернштейна ( http: //cr. yp.to/djbdns.html ) быть чистым, простым и очень быстрым. Найдите cache.h и cache.c в архиве djdns.

ответил user105991 24 Mayam09 2009, 06:19:37
0

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

  • Glib
  • Библиотека стандартных функций iMatix
  • разрозненные элементы из заголовков ядра Linux (например, список)
ответил Sandeep 22 Mayam11 2011, 08:55:15
0

Это похоже на большинство контейнеров и некоторые алгоритмы. Также нет лицензирования, все заголовки содержат - «код может использоваться без ограничений». http: //www.planet-source -code.com/vb/scripts/ShowCode.asp?txtCodeId=13867&lngWId=3

ответил MockM4XMacro 11 72012vEurope/Moscow11bEurope/MoscowSun, 11 Nov 2012 04:55:13 +0400 2012, 04:55:13

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132