C 的容器类/库

有人知道任何 C 容器库吗?我正在寻找一些东西,提供链表,数组,哈希表等的标准实现,很多与 C + + STL 相同的方式。关键问题是:

  1. 客户端代码应该能够在不修改库的情况下为多个不同的数据类型创建容器。
  2. 创建和使用容器的界面应该是直观的。
48592 次浏览

Chuck Falconer 有一个不错的 C 语言哈希库,包含一个 C + + 接口,点击网页上的 hashlib.zip 下载。

Ben Pfeff 有一个非常好的、文档非常完善的二进制和平衡树库 GNU libavl,它实现了大多数主要的树结构,包括二进制搜索树、 AVL 树、红黑树和每个树的线程化版本。

Libavl 是根据 LGPL (2.0.3版本)授权的,hashlib 是 GPL。

就数组和链表而言,我不确定您在寻找什么,因为前者直接受到语言的支持,而后者通常足够琐碎,可以在不需要库的情况下实现。

我只是在寻找 map/dictionary 容器的 C 实现时遇到了 SGLIB。不幸的是,没有地图,但它似乎包括集装箱你问。我不知道这有多好吃。

Http://sglib.sourceforge.net.

我一直在使用一个从 Hanson 的“ C 接口和实现”一书中发展起来的库。他的消息来源可以在

CII 图书网站

一切都是抽象数据类型。有列表,集合,表(地图)。

#include "queue.h"获得对单链表、单链尾队列、列表和尾队列的实现的访问。

我发现 D · J · 伯恩斯坦(D.J. Bernstein,http://cr.yp.to/djbdns.html)提出的一种用于在内存中存储任意对象的通用缓存,它干净、简单,而且超级快。在 djdns tarball 中查找 cache. h 和 cache. c。

Sglib 是一个优秀的通用数据结构库,该库目前提供的通用实现用于:

  • 排序数组
  • 连结清单
  • 已排序的链表
  • 双向链表双向链表
  • 红黑相间的树木
  • 散装容器散装容器散装容器

它非常快,油嘴滑舌的更快,灵感来自于标准模板库

另一个解决方案是 迷人的混沌软件.C 宏库:
H: C 中高效的 B 树库。
H: C 中快速轻量级哈希表库。
H: C 中的简单向量容器。

Kulesh Shanmugasundaram 提供了通用的 Linux 内核链接列表和基于 Linux 内核链接列表的通用散列表。

Sglib 和 Attractive浑沌软件以及 Linux 内核链表都是 C 宏库。使用 void*在 C 语言中实现通用容器可能效率低下。C 宏模仿 C + + 模板,并且与 C + + 模板一样高效。

有些我听说过(但从未用过)的是

  • 油嘴滑舌
  • 标准函数库
  • 来自 Linux 内核头部的不同元素(例如 list)

这似乎涵盖了大多数容器和一些算法。也没有授权,所有的头包含-’代码可以使用没有限制。http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=13867&lngWId=3

Ccl 怎么样? 这是一个 C 的容器库,也许它最适合你。你可以看到 https://code.google.com/p/ccl/。 好好享受吧。