有没有人知道任何C容器库?我正在寻找一个类似于C++ STL的东西,它可以提供链表、数组、哈希表等标准实现。主要关注点是:
- 客户端代码应能够创建多种不同数据类型的容器,而无需修改库。
- 创建和使用容器的接口应该直观易懂。
有没有人知道任何C容器库?我正在寻找一个类似于C++ STL的东西,它可以提供链表、数组、哈希表等标准实现。主要关注点是:
当我在寻找一个C语言实现的map/dictionary容器时,我偶然发现了SGLIB。不幸的是,它似乎没有提供map容器,但它好像包含了你所问的其他容器。我不知道它有多好。
Sglib 是一款非常优秀的通用数据结构库。该库目前提供了以下通用实现:
它的速度非常快,比 glib 还要快。它的灵感来自于标准模板库。 下载链接
另一个解决方案是 Attractive Chaos sotware。C 宏库:
kbtree.h:C 语言中高效的 B 树库。
khash.h:C 语言中快速轻量级的哈希表库。
kvec.h:C 语言中简单的向量容器。
Kulesh Shanmugasundaram 提出了基于 Linux 内核链表的通用 Linux 内核链表和通用哈希表。
Sglib、Attractive Chaos sotware 和 Linux Kernel Linked List 都是 C 宏库。在 C 中使用 void*
实现通用容器可能效率低下。C 宏模仿 C++ 模板,与 C++ 模板一样高效。
void *
可能会指向进程地址空间的各个位置。 - val is still with MonicaChuck Falconer编写了一份不错的哈希库,包含C++接口,点击网页上的hashlib.zip进行下载。
Ben Pfaff拥有非常好的、极其详细的二叉树和平衡树库——GNU libavl,它实现了大多数主要的树结构,包括二叉搜索树、AVL树、红黑树以及每种树的线索化版本。
libavl在2.0.3版本后采用了LGPL许可证,而hashlib则是GPL。
对于数组和链表,我不确定您需要什么样的支持,因为前者直接被语言支持,而后者通常足够简单,无需使用库来实现。
那么ccl怎么样?这是一个容器库,曾经提出过将其作为C标准的一部分(但未成功)。也许它最适合你。您可以查看 https://github.com/jacob-navia/ccl。 享受它。
我听说过一些编程库,但从未使用过,其中包括:
要获取单链表、单链尾队列、列表和尾队列的实现,请使用#include "queue.h"
。
我发现 D. J. 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