C的容器类/库

时间:2008-11-20 15:19:25

标签: c containers

有谁知道任何C容器库?我正在寻找能够提供链接列表,数组,哈希表等标准实现的东西,就像C ++ STL一样。主要关注点是:

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

8 个答案:

答案 0 :(得分:23)

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

http://sglib.sourceforge.net

答案 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)

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

下载

cii book website

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

答案 5 :(得分:2)

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

我发现了D. J. Bernstein(http://cr.yp.to/djbdns.html)在内存中存储任意对象的通用缓存,既干净又简单,速度超快。在djdns tarball中查找cache.h和cache.c。

答案 6 :(得分:2)

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

  • 油嘴
  • iMatix标准函数库
  • Linux内核头文件中的不同元素(例如列表)

答案 7 :(得分:2)

这似乎涵盖了大多数容器和一些算法。还没有许可,所有标题都包含 - '代码可以不受限制地使用。 http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=13867&lngWId=3