Program Tip

C 용 컨테이너 클래스 / 라이브러리

programtip 2020. 10. 17. 12:04
반응형

C 용 컨테이너 클래스 / 라이브러리


누구든지 C 컨테이너 라이브러리를 알고 있습니까? C ++ STL이하는 것과 같은 방식으로 연결된 목록, 배열, 해시 테이블 등의 표준 구현을 제공하는 것을 찾고 있습니다. 주요 관심사는 다음과 같습니다.

  1. 클라이언트 코드는 라이브러리를 수정하지 않고도 다양한 데이터 유형에 대한 컨테이너를 생성 할 수 있어야합니다.
  2. 컨테이너를 만들고 사용하기위한 인터페이스는 직관적이어야합니다.

지도 / 사전 컨테이너의 C 구현을 찾는 동안 방금 SGLIB를 발견했습니다. 불행히도지도는 없지만 요청한 컨테이너가 포함 된 것 같습니다. 얼마나 좋은지 모르겠습니다.

http://sglib.sourceforge.net .


Chuck Falconer 에는 C ++ 인터페이스가 포함 된 C로 작성된 괜찮은 해시 라이브러리가 있습니다. 웹 페이지에서 hashlib.zip을 클릭하여 다운로드하세요.

Ben Pfaff이진 검색 트리, AVL 트리, 레드-블랙 트리 및 각각의 스레드 버전을 포함한 대부분의 주요 트리 구조를 구현하는 매우 훌륭하고 매우 잘 문서화 된 바이너리 및 균형 트리 라이브러리 인 GNU libavl 을 가지고 있습니다.

libavl은 LGPL (버전 2.0.3 기준)에 따라 사용이 허가되고 hashlib는 GPL입니다.

전자는 언어에 의해 직접 지원되고 후자는 일반적으로 라이브러리를 보증하지 않고 구현하기에 충분히 사소하기 때문에 배열 및 연결 목록에 관한 한 당신이 찾고있는 것이 무엇인지 잘 모르겠습니다.


Sglib 는 뛰어난 일반 데이터 구조 라이브러리입니다. 라이브러리는 현재 다음에 대한 일반 구현을 제공합니다.

  • 배열 정렬
  • 연결 목록
  • 정렬 된 연결 목록
  • 이중 연결 목록
  • 빨강-검정 나무
  • 해시 된 컨테이너

매우 빠릅니다. 그 glib 더 빨리. 표준 템플릿 라이브러리에서 영감을 얻었습니다. 여기에서 다운로드

또 다른 솔루션은 매력적인 카오스 소프트웨어 입니다. C 매크로 라이브러리 :
kbtree.h : C의 효율적인 B- 트리 라이브러리.
khash.h : C의 빠르고 가벼운 해시 테이블 라이브러리.
kvec.h : C의 단순 벡터 컨테이너.

Kulesh Shanmugasundaram 은 일반 Linux Kernel Linked List와 Linux Kernel Linked List를 기반으로하는 일반 해시 테이블을 제공합니다.

Sglib 및 매력적인 카오스 소프트웨어와 Linux Kernel Linked List는 C 매크로 라이브러리입니다. void*C에서 일반 컨테이너를 구현하는 데 사용 하는 것은 비효율적 일 수 있습니다. C 매크로는 C ++ 템플릿을 모방하고 C ++ 템플릿만큼 효율적입니다.


ccl은 어떻습니까? 이것은 C 용 컨테이너 라이브러리입니다. 아마도 여러분에게 가장 적합 할 것입니다. https://code.google.com/p/ccl/ 을 볼 수 있습니다 . 그것을 즐기십시오.


저는 Hanson의 "C Interface and Implementations"책에서 자라온 라이브러리를 사용하고 있습니다. 그의 출처는

cii 책 웹 사이트

모든 것이 추상 데이터 유형입니다. 목록, 세트, ​​테이블 (지도)이 있습니다.


#include "queue.h" 단일 연결 목록, 단일 연결 테일 큐, 목록 및 테일 큐 구현에 액세스 할 수 있습니다.

DJ Bernstein ( http://cr.yp.to/djbdns.html )이 메모리에 임의의 객체를 저장하기위한 일반적인 캐시가 깨끗하고 간단하며 매우 빠르다는 것을 발견했습니다. djdns tarball에서 cache.h 및 cache.c를 찾습니다.


내가 들어 본 적이 있지만 사용하지 않은 것 중 일부는

  • 말 잘하는
  • iMatix 표준 기능 라이브러리
  • Linux 커널 헤더 (예 : 목록)에서 분리 된 요소

이것은 대부분의 컨테이너와 일부 알고리즘을 포함하는 것 같습니다. 라이센스도 없으며 모든 헤더에는 '제한없이 코드를 사용할 수 있습니다.'가 포함됩니다. http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=13867&lngWId=3

참고 URL : https://stackoverflow.com/questions/305611/container-class-library-for-c

반응형