C的容器类/库

How*_*May 75 c containers

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

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

Nic*_*unt 23

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

http://sglib.sourceforge.net.

  • 截至2013-07,该sourceforge项目似乎已经死亡.我注意到文档没有在任何地方提到"错误"这个词,也没有提到任何错误处理.Jacob Navia的C容器库在这方面要好得多,并且有大约370页的正式文档 - 但遗憾的是,他的ccl不是开源的. (3认同)

Rob*_*ble 10

Chuck Falconer有一个很好的用C编写的哈希库,包括一个C++接口,点击网页上的hashlib.zip进行下载.

Ben Pfaff拥有非常好且极其完善的二进制和平衡树库GNU libavl,它实现了大多数主要的树结构,包括二叉搜索树,AVL树,红黑树和每个树的线程版本.

libavl是根据LGPL许可的(从版本2.0.3开始),hashlib是GPL.

我不确定你在寻找什么,就数组和链表来说,前者是由语言直接支持的,后者通常是微不足道的,无需担保库就可以实现.

  • @Nick:使用Falconer的hashlib代码的权限真的没什么不清楚的:它显然是根据GPL许可的.如果您的商业代码与GPL条款一致(基本上如果您的商业代码也是GPL许可),则无需与他联系.如果您想要其他许可条款而不是GPL,他可以与您联系. (2认同)
  • @Michael Burr:简称GPL和LGPL意味着不能在商业环境或真正的开源环境中使用.我也建议那些认为这是寻求其他地方解决方案的人. (2认同)

Lea*_*ear 10

Sglib是一个出色的通用数据结构库.该库目前提供通用实现:

  • 排序数组
  • 链表
  • 排序链表
  • 双链表
  • 红黑树
  • 哈希容器

它非常快.更快,更油腻.它的灵感来自标准模板库.在这里下载

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

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

Sglib和有吸引力的混沌软件和Linux内核链接列表是C宏库.使用void*来实现用C通用容器可能是无效率的.C宏模仿C++模板,并且与C++模板一样高效.

  • 您说过:“使用void *在C中实现通用容器可能效率不高。” -您能解释一下为什么会这样吗? (2认同)

小智 7

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

  • @navicore已经给出了这个答案.他在谈论一个不同的库,它有几个像素不同的首字母缩略词. (2认同)

nav*_*ore 5

我一直在使用我从Hanson的"C接口和实现"一书中增长的库.他的来源可以下载

cii书网站

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

  • 最后,您可以在http://code.google.com/p/cii/上找到该代码,并根据极其灵活的MIT许可证获得许可. (4认同)