79

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

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

8 回答 8

26

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

http://sglib.sourceforge.net

于 2008-11-20T19:03:15.333 回答
11

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

  • 排序数组
  • 链表
  • 排序的链表
  • 双链表
  • 红黑树
  • 散列容器

它非常快。更快的油嘴滑舌。它的灵感来自标准模板库。在这里下载

另一种解决方案是Attractive Chaos 软件。C 宏库:
kbtree.h:C 中的高效 B-tree 库。
khash.h:C 中的快速和轻量级哈希表库。
kvec.h:C 中的简单向量容器。

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

Sglib 和 Attractive Chaos 软件和 Linux Kernel Linked List 是 C 宏库。用于在Cvoid*中实现通用容器可能效率低下。C 宏模仿 C++ 模板,并且与 C++ 模板一样高效。

于 2009-05-24T02:46:51.317 回答
10

Chuck Falconer有一个不错的用 C 编写的哈希库,其中包括一个 C++ 接口,点击网页上的 hashlib.zip 下载。

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

libavl 在 LGPL 下获得许可(从 2.0.3 版开始),hashlib 是 GPL。

我不确定你在寻找什么数组和链表,因为前者是由语言直接支持的,而后者通常是微不足道的,可以在不需要库的情况下实现。

于 2008-11-20T15:45:10.833 回答
7

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

于 2013-05-06T02:05:41.273 回答
5

我一直在使用我从 Hanson 的“C 接口和实现”一书中发展而来的库。他的源代码可在以下位置下载

cii 图书网站

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

于 2008-11-22T16:04:09.983 回答
2

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

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

于 2009-05-24T02:19:37.907 回答
2

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

  • 油嘴滑舌
  • iMatix 标准函数库
  • Linux 内核头文件中的不同元素(例如列表)
于 2011-05-22T04:55:15.007 回答
2

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

于 2012-11-11T00:55:13.577 回答