有人知道任何C容器库吗?我正在寻找某种能够提供链表,数组,哈希表等标准实现的东西,与C ++ STL的实现方式大致相同。关键问题是:
- 客户端代码应该能够在不修改库的情况下为多种不同数据类型创建容器。
- 创建和使用容器的界面应直观。
Answers:
我在寻找地图/字典容器的C实现时遇到了SGLIB。不幸的是,没有地图,但它似乎包括了您询问的容器。我不知道它有多好。
Sglib是一个出色的通用数据结构库。该库当前提供以下通用实现:
非常快。更快的glib。它的灵感来自标准模板库。在这里下载
另一个解决方案是有吸引力的混沌软件。C宏库:
kbtree.h:C中的高效B树库
khash.h:C中的快速轻量哈希表库
。kvec.h:C中的简单矢量容器。
Kulesh Shanmugasundaram展示了通用的Linux内核链接列表和基于Linux内核链接列表的通用哈希表。
Sglib和有吸引力的Chaos软件和Linux内核链接列表是C宏库。使用void*
C实现通用容器可能效率不高。C宏模仿C ++模板,并且效率与C ++模板一样。
void *
可能会指向整个过程的地址空间。
Chuck Falconer有一个不错的用C语言编写的哈希库,其中包括C ++接口,请单击网页上的hashlib.zip进行下载。
Ben Pfaff有一个非常不错的文档,该文档很好地记录了二进制和平衡树GNU libavl,它实现了大多数主要的树结构,包括二进制搜索树,AVL树,红黑树以及每个树的线程版本。
libavl是根据LGPL(从2.0.3版开始)获得许可的,hashlib是GPL。
我不确定您要查找的数组和链接列表的范围,因为前者受该语言直接支持,而后者通常足够琐碎而无需保证使用库即可实现。
CCL怎么样?这是C的容器库。也许最适合您。您可以看到https://code.google.com/p/ccl/。好好享受。
#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