题
有人知道 C 容器库吗?我正在寻找能够提供链表、数组、哈希表等标准实现的东西,与 C++ STL 的方式非常相似。主要问题是:
- 客户端代码应该能够为多种不同的数据类型创建容器,而无需修改库。
- 创建和使用容器的界面应该直观。
解决方案
我在寻找地图/字典容器的C实现时遇到了SGLIB。不幸的是,没有地图,但它似乎包括你询问的容器。我不知道它有多好。
其他提示
Chuck Falconer 有一个用C编写的体面哈希库,其中包含一个C ++界面,点击on hashlib.zip在网页上下载。
Ben Pfaff 拥有非常漂亮且记录完备的二进制和平衡树库, GNU libavl ,实现大多数主要树结构,包括二叉搜索树,AVL树,红黑树和每个的线程版本。
libavl是根据LGPL许可的(从2.0.3版开始),hashlib是GPL。
对于数组和链表而言,我不确定你在寻找什么,因为前者直接由语言支持,而后者通常很容易实现而不需要保证库。
斯格利布 是一个优秀的通用数据结构库。该库目前提供以下通用实现:
- 排序数组
- 链表
- 排序的链表
- 双链表
- 红黑树
- 散列容器
速度非常快。油嘴滑舌更快。它的灵感来自标准模板库。 在这里下载
另一个解决方案是 有吸引力的混沌软件. 。C宏库:
kbtree.h:C 中的高效 B 树库。
哈什.h:C 中的快速且轻量级的哈希表库。
kvec.h:C 中的简单向量容器。
库勒什·尚穆格桑达拉姆 提出了通用 Linux 内核链表和基于 Linux 内核链表的通用哈希表。
Sglib 和 Attractive Chaos 软件以及 Linux 内核链表都是 C 宏库。使用 void*
在 C 中实现通用容器可能效率低下。C 宏模仿 C++ 模板,并且与 C++ 模板一样高效。
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。
我听说过(但从未使用过)的一些是
- 油嘴滑舌
- iMatix 标准函数库
- 来自 Linux 内核头的不同元素(例如列表)
这似乎涵盖了大多数容器和一些算法。还没有许可,所有标题都包含 - '代码可以不受限制地使用。