11

可能重复:
C 的容器类/库

使用 C++ 而不是 C 的主要原因之一是 STL 提供的极其方便的容器。但是,如果我想用纯 C 编写代码而不需要从头开始编写所有容器,我还有什么选择?

我听说过(但从未使用过)的一些是

  • 油嘴滑舌
  • iMatix 标准函数库
  • Linux 内核头文件中的不同元素(例如list

任何关于纯 C(Ansi 或其他)容器的意见和/或经验将不胜感激。

4

2 回答 2

3

我推荐 GLib 仅仅是因为它有一组很好的特性,而且它相对成熟、稳定、可移植和广泛使用。

于 2011-05-20T16:58:39.400 回答
0

您或库编写者可以编写容器等,每次您想将它们用于不同的类型时,可能会将定义放入巨大的宏中,或者您可以void *用于容器,失去对类型安全的所有希望,有时甚至失去一些性能。(C 的qsort函数可能比 C++ 的sort模板效率低得多。)没有办法在 C 中获得与 C++ 容器、迭代器和算法等效的功能。

我对 Glib 了解不多,您对 Linux 内核头文件中不同元素的引用有点含糊。您提到的 Linux 列表可能是您所获得的典型内容:没有类型安全性和一组编写良好的函数,这些函数将针对每种数据类型以不同的方式命名。快速浏览一下 iMatix 并没有透露任何容器。

于 2011-05-20T17:14:00.600 回答