有人知道任何 C 容器库吗?我正在寻找能够提供链表、数组、哈希表等标准实现的东西,与 C++ STL 所做的方式非常相似。主要问题是:
- 客户端代码应该能够为多种不同的数据类型创建容器,而无需修改库。
- 创建和使用容器的界面应该是直观的。
有人知道任何 C 容器库吗?我正在寻找能够提供链表、数组、哈希表等标准实现的东西,与 C++ STL 所做的方式非常相似。主要问题是:
我在寻找地图/字典容器的 C 实现时遇到了 SGLIB。不幸的是,没有地图,但它似乎包括您询问的容器。我不知道它有多好。
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++ 模板一样高效。
Chuck Falconer有一个不错的用 C 编写的哈希库,其中包括一个 C++ 接口,点击网页上的 hashlib.zip 下载。
Ben Pfaff有非常好的和非常好的文档化的二叉树和平衡树库,GNU libavl,它实现了大多数主要的树结构,包括二叉搜索树、AVL 树、红黑树和每个树的线程版本。
libavl 在 LGPL 下获得许可(从 2.0.3 版开始),hashlib 是 GPL。
我不确定你在寻找什么数组和链表,因为前者是由语言直接支持的,而后者通常是微不足道的,可以在不需要库的情况下实现。
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。
我听说过(但从未使用过)的一些是
这似乎涵盖了大部分容器和一些算法。也没有许可,所有标题都包含 - '代码可以不受限制地使用。http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=13867&lngWId=3