누구든지 C 컨테이너 라이브러리를 알고 있습니까? C ++ STL이하는 것과 같은 방식으로 연결된 목록, 배열, 해시 테이블 등의 표준 구현을 제공하는 것을 찾고 있습니다. 주요 관심사는 다음과 같습니다.
- 클라이언트 코드는 라이브러리를 수정하지 않고도 다양한 데이터 유형에 대한 컨테이너를 생성 할 수 있어야합니다.
- 컨테이너를 만들고 사용하기위한 인터페이스는 직관적이어야합니다.
답변:
지도 / 사전 컨테이너의 C 구현을 찾는 동안 방금 SGLIB를 발견했습니다. 불행히도지도는 없지만 요청한 컨테이너가 포함 된 것 같습니다. 얼마나 좋은지 모르겠습니다.
Sglib 는 뛰어난 일반 데이터 구조 라이브러리입니다. 라이브러리는 현재 다음에 대한 일반 구현을 제공합니다.
매우 빠릅니다. 그 glib 더 빨리. 표준 템플릿 라이브러리에서 영감을 얻었습니다. 여기에서 다운로드
또 다른 솔루션은 매력적인 카오스 소프트웨어 입니다. C 매크로 라이브러리 :
kbtree.h : C의 효율적인 B- 트리 라이브러리.
khash.h : C의 빠르고 가벼운 해시 테이블 라이브러리.
kvec.h : C의 간단한 벡터 컨테이너.
Kulesh Shanmugasundaram 은 일반 Linux Kernel Linked List와 Linux Kernel Linked List를 기반으로하는 일반 해시 테이블을 제공합니다.
Sglib 및 매력적인 Chaos 소프트웨어와 Linux Kernel Linked List는 C 매크로 라이브러리입니다. void*
C에서 일반 컨테이너를 구현하는 데 사용 하는 것은 비효율적 일 수 있습니다. C 매크로는 C ++ 템플릿을 모방하고 C ++ 템플릿만큼 효율적입니다.
void *
은 프로세스의 주소 공간 전체를 가리킬 것입니다.
Chuck Falconer 에는 C ++ 인터페이스가 포함 된 C로 작성된 괜찮은 해시 라이브러리가 있습니다. 웹 페이지에서 hashlib.zip을 클릭하여 다운로드하세요.
Ben Pfaff 는 이진 검색 트리, AVL 트리, 레드-블랙 트리 및 각각의 스레드 버전을 포함한 대부분의 주요 트리 구조를 구현하는 매우 훌륭하고 매우 잘 문서화 된 바이너리 및 균형 잡힌 트리 라이브러리 인 GNU libavl 을 가지고 있습니다.
libavl은 LGPL (버전 2.0.3 기준)에 따라 사용이 허가되고 hashlib는 GPL입니다.
전자는 언어에 의해 직접 지원되고 후자는 일반적으로 라이브러리를 보증하지 않고 구현하기에 충분히 사소하기 때문에 배열 및 연결 목록에 관한 한 당신이 찾고있는 것이 무엇인지 잘 모르겠습니다.
ccl은 어떻습니까? 이것은 C 용 컨테이너 라이브러리입니다. 아마도 여러분에게 가장 적합 할 것입니다. https://code.google.com/p/ccl/ 을 볼 수 있습니다 . 그것을 즐기십시오.
저는 Hanson의 "C Interface and Implementations"책에서 성장한 라이브러리를 사용하고 있습니다. 그의 출처는
모든 것이 추상 데이터 유형입니다. 목록, 세트, 테이블 (지도)이 있습니다.
#include "queue.h"
단일 연결 목록, 단일 연결 테일 큐, 목록 및 테일 큐 구현에 액세스 할 수 있습니다.
DJ Bernstein ( http://cr.yp.to/djbdns.html )이 메모리에 임의의 객체를 저장하기위한 일반적인 캐시가 깨끗하고 간단하며 매우 빠르다는 것을 발견했습니다. djdns tarball에서 cache.h 및 cache.c를 찾습니다.
이것은 대부분의 컨테이너와 일부 알고리즘을 포함하는 것 같습니다. 라이센스도 없으며 모든 헤더에는 '제한없이 코드를 사용할 수 있습니다.'가 포함됩니다. http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=13867&lngWId=3