可能重复:
C 的容器类/库
使用 C++ 而不是 C 的主要原因之一是 STL 提供的极其方便的容器。但是,如果我想用纯 C 编写代码而不需要从头开始编写所有容器,我还有什么选择?
我听说过(但从未使用过)的一些是
- 油嘴滑舌
- iMatix 标准函数库
- Linux 内核头文件中的不同元素(例如list)
任何关于纯 C(Ansi 或其他)容器的意见和/或经验将不胜感激。
我推荐 GLib 仅仅是因为它有一组很好的特性,而且它相对成熟、稳定、可移植和广泛使用。
您或库编写者可以编写容器等,每次您想将它们用于不同的类型时,可能会将定义放入巨大的宏中,或者您可以void *
用于容器,失去对类型安全的所有希望,有时甚至失去一些性能。(C 的qsort
函数可能比 C++ 的sort
模板效率低得多。)没有办法在 C 中获得与 C++ 容器、迭代器和算法等效的功能。
我对 Glib 了解不多,您对 Linux 内核头文件中不同元素的引用有点含糊。您提到的 Linux 列表可能是您所获得的典型内容:没有类型安全性和一组编写良好的函数,这些函数将针对每种数据类型以不同的方式命名。快速浏览一下 iMatix 并没有透露任何容器。