需要一个通用的库,纯C

Igo*_*kon 23 c data-structures

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

(注意:"好"我的意思是快速+优雅的界面).

yve*_*mes 15

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

  • 此链接已过时.这是一个更新:http://developer.gnome.org/glib/ (2认同)

Unk*_*own 14

Apache Portable Runtime

http://apr.apache.org/

包括这些领域的模块.

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


Nor*_*sey 14

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

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


And*_*ndt 7

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

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

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

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

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


non*_*one 5

您可能还想查看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种功能,涵盖以下领域:

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

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

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