C的容器类/库

有谁知道任何C的容器库? 我正在寻找一些链接列表,数组,哈希表等标准实现的东西,就像C ++ STL一样。 主要关注的是:

  1. 客户端代码应该能够为多种不同的数据types创build容器,而无需修改库。
  2. 用于创build和使用容器的界面应该是直观的。

我刚刚遇到SGLIB,同时寻找地图/字典容器的C实现。 不幸的是,没有地图,但似乎包括你问的容器。 我不知道它有多好。

http://sglib.sourceforge.net

Chuck Falconer有一个用C语言编写的体面散列库,包含一个C ++接口,点击网页上的hashlib.zip进行下载。

本Pfaff有非常好的和非常良好的二进制和平衡树库, GNU libavl ,实现了大多数主要的树结构,包括二叉search树,AVL树,红黑树和每个的线程版本。

libavl是根据LGPL(2.0.3版本)授权的,hashlib是GPL。

就数组和链表而言,我不确定你在寻找什么,因为前者是由语言直接支持的,而后者通常不需要担保库就可以实现。

怎么样ccl? 这是C的一个容器库。也许最适合你。 你可以看到https://code.google.com/p/ccl/ 。 好好享受。

Sglib是一个优秀的通用数据结构库。 该库目前提供了以下通用实现:

  • sorting数组
  • 链表
  • sorting的链接列表
  • 双链表
  • 红黑树
  • 散装容器

速度非常快 比那更快 它受标准模板库的启发。 在这里下载

另一个解决scheme是有吸引力的混沌软件 。 Cmacros库:
kbtree.h:C中高效的B树库
khash.h:C中快速和轻量级的哈希表库
kvec.h:C中的简单向量容器

Kulesh Shanmugasundaram介绍了通用Linux内核链接列表和基于Linux内核链接列表的通用哈希表。

Sglib和有吸引力的混沌软件和Linux内核链接列表是Cmacros库。 使用void*在C中实现generics容器可能是低效的。 Cmacros模仿C ++模板,和C ++模板一样高效。

我一直在使用Hanson的“C接口和实现”书中的一个库。 他的来源可以在下载

cii书籍网站

一切都是抽象数据types。 有List,Set,Table(地图)。

#include "queue.h"可以访问单链表,单链尾尾,列表和尾部队列的实现。

我发现了一个通用的caching,用于在DJ Bernstein( http://cr.yp.to/djbdns.html )的内存中存储任意对象,既清洁又简单,速度也很快。 在djdns tarball中查找cache.h和cache.c。

一些我听说过的(但从未使用过的)是

  • 油嘴
  • iMatix标准函数库
  • Linux内核头文件中的不同元素(例如列表)

这似乎涵盖了大部分容器和一些algorithm。 也没有许可证,所有的头文件都包含 – '代码可以不受限制地使用'。 http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=13867&lngWId=3