C的容器类/库
有谁知道任何C的容器库? 我正在寻找一些链接列表,数组,哈希表等标准实现的东西,就像C ++ STL一样。 主要关注的是:
- 客户端代码应该能够为多种不同的数据types创build容器,而无需修改库。
- 用于创build和使用容器的界面应该是直观的。
我刚刚遇到SGLIB,同时寻找地图/字典容器的C实现。 不幸的是,没有地图,但似乎包括你问的容器。 我不知道它有多好。
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