有人知道 C 容器库吗?我正在寻找能够提供链表、数组、哈希表等标准实现的东西,与 C++ STL 的方式非常相似。主要问题是:

  1. 客户端代码应该能够为多种不同的数据类型创建容器,而无需修改库。
  2. 创建和使用容器的界面应该直观。
有帮助吗?

解决方案

我在寻找地图/字典容器的C实现时遇到了SGLIB。不幸的是,没有地图,但它似乎包括你询问的容器。我不知道它有多好。

http://sglib.sourceforge.net

其他提示

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/ 。 享受吧。

我一直在使用我从Hanson的<!>“C接口和实现<!>”增长的库。书。他的消息来源可以在

下载

cii book website

一切都是抽象数据类型。有List,Set,Table(地图)。

#include "queue.h"可以访问单链接列表,单链接尾部队列,列表和尾部队列的实现。

我找到了一个通用缓存,用于在DJ Bernstein( http:// cr。 yp.to/djbdns.html )既干净又简单,速度超快。在djdns tarball中查找cache.h和cache.c。

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

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

这似乎涵盖了大多数容器和一些算法。还没有许可,所有标题都包含 - '代码可以不受限制地使用。

scroll top