需要一个通用的库,纯C

你能为C推荐一个好的通用数据容器库(纯C,而不是C ++)吗? 我只需要基本结构,如动态数组,哈希表等。

(注意:“好”我指的是快速+优雅的界面)。

我认为Dave Hanson的C接口和实现既快又优雅。 它包括许多不同类型的容器,一些字符串处理,多精度算法,exception,几个不同的内存管理器。 好东西。

有一本书,但你不需要购买它来使用该软件。

Glib不足以满足您的需求吗? 🙂 developer.gnome.org/glib

Apache Portable Runtime

http://apr.apache.org/

包括这些领域的模块。

  • 平台定义
  • 内部内存分配
  • primefaces操作
  • 动态对象处理
  • 用于操纵环境的function
  • 错误代码
  • 文件信息
  • 文件I / O处理function
  • 文件名匹配function
  • 杂项库例程
  • 命令参数解析
  • 全球锁定例程
  • 哈希表
  • 通用图书馆例程
  • MMAP(记忆图)例程
  • 网络例程
  • 民意调查
  • 内存池function
  • 便携性例程
  • 处理锁定例程
  • 随机函数
  • 环宏实现
  • 共享内存例程
  • 信号处理
  • 字符串例程
  • 内部APR支持function
  • 表和数组函数
  • 条件变量例程
  • Thread Mutex例程
  • 线程和进程函数
  • 读者/作者锁定例程
  • 时间例程
  • 用户和组ID服务

我之前推荐过MemSL ,但网站和公司似乎已经灭绝。 我现在建议使用glib ,它涵盖了大部分相同的function,并且在整个Linux社区中得到广泛支持和使用。

我在实现x86内核时使用了MemSL,我发现它是通用的,可靠的,没有bug。

来自描述:C内存结构库概述(MemSL)

Memory Structures Library,简称MemSL,是一个有用的例程库,允许在C中有效使用复杂的数据结构.MessSL包含用于管理的例程:

  • 多维动态分配arrays
  • 单链接列表
  • 双链表
  • 循环链接列表
  • 使用链接列表剪切,复制和粘贴
  • 链接列表的多个位置指针
  • 堆栈
  • 队列
  • 出队
  • 手袋
  • 字典
  • 具有单独链接的哈希表
  • 使用用户定义的分页的哈希表
  • 具有动态分页的哈希表
  • 二叉搜索树
  • 螺纹二进制搜索树
  • AVL平衡二进制搜索树
  • AVL平衡螺纹二进制搜索树
  • 优先级堆
  • 完全动态的优先搜索队列

您可能还想查看iMatix SFL ,引用他们的网页:

iMatix的SFL(标准函数库)是用于C / C ++程序的可移植函数库。 SFL是多年开发的结果,是为了互联网社区的利益而提供的开源软件。 SFL是用ANSI C编写的,并已移植到MS-DOS,Windows,OS / 2,Linux和其他UNIX系统(IBM AIX,SunOS,HP / UX,Solaris,NetBSD,FreeBSD,SCO OpenServer,> Digital UNIX)和数字OpenVMS。 它带有完整的HTML源代码和文档。

SFL提供约450种function,涵盖以下领域:

  • 压缩,加密和编码;
  • 数据类型转换和格式化;
  • 日期,时间和日历;
  • 目录和环境访问;
  • 用户和进程组;
  • 反转位图索引;
  • 符号表;
  • 错误消息文件;
  • 配置文件;
  • 字符串操作和搜索;
  • 文件访问;
  • Internet套接字访问;
  • Internet编程(MIME,CGI);
  • SMTP(电子邮件)访问;
  • 服务器(批量)编程;
  • 程序追踪。

SFL是免费软件,您可以根据SFL许可协议使用和分发用于私人或商业目的。

有关API本身的更多详细信息,请参见此处 。

Sglib “是C的通用库,受C ++标准模板库的启发”

让我补充一下:

http://libslack.org

(…并添加到:libcx)

您可能有兴趣查看qLibc。

http://en.wikipedia.org/wiki/Qlibc http://www.qdecoder.org/qlibc/

它是一个通用的完整C / C ++库,包含各种容器和通用库例程。