有谁知道任何C容器库?我正在寻找能够提供链接列表,数组,哈希表等标准实现的东西,就像C ++ STL一样。主要关注点是:
答案 0 :(得分:23)
我在寻找地图/字典容器的C实现时遇到了SGLIB。不幸的是,没有地图,但它似乎包括你询问的容器。我不知道它有多好。
答案 1 :(得分:10)
Chuck Falconer有一个用C编写的体面哈希库,包含一个C ++接口,点击网页上的hashlib.zip进行下载。
Ben Pfaff具有非常好且极其完善的二进制和平衡树库GNU libavl,它实现了大多数主要树结构,包括二叉搜索树,AVL树,红黑树和线程版本每个
libavl是根据LGPL许可的(从2.0.3版开始),hashlib是GPL。
对于数组和链表而言,我不确定你在寻找什么,因为前者直接由语言支持,而后者通常很容易实现而不需要保证库。
答案 2 :(得分:10)
Sglib是一个出色的通用数据结构库。该库目前提供以下的通用实现:
速度非常快。更快,更油腻。它的灵感来自标准模板库。 Download here
另一个解决方案是Attractive Chaos sotware。 C宏库:
kbtree.h:C中有效的B树库。
khash.h:C中的快速和轻量级哈希表库。
kvec.h:C中的简单向量容器。
Kulesh Shanmugasundaram提供了通用Linux内核链接列表和基于Linux内核链接列表的通用哈希表。
Sglib和有吸引力的混沌软件和Linux内核链接列表是C宏库。使用void*
在C中实现通用容器可能效率低下。 C宏模仿C ++模板,并且与C ++模板一样高效。
答案 3 :(得分:7)
ccl怎么样?这是C的容器库。也许它最适合你。你可以看到https://code.google.com/p/ccl/。 享受吧。
答案 4 :(得分:5)
答案 5 :(得分:2)
#include "queue.h"
可以访问单链接列表,单链接尾部队列,列表和尾部队列的实现。
我发现了D. J. Bernstein(http://cr.yp.to/djbdns.html)在内存中存储任意对象的通用缓存,既干净又简单,速度超快。在djdns tarball中查找cache.h和cache.c。
答案 6 :(得分:2)
我听过(但从未使用过的)的一些是
答案 7 :(得分:2)
这似乎涵盖了大多数容器和一些算法。还没有许可,所有标题都包含 - '代码可以不受限制地使用。 http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=13867&lngWId=3