使用C ++而不是C的主要原因之一是STL提供的非常方便的容器。但是,如果我想用纯C编写代码而不必从头开始编写所有容器,我还有什么选择?
我听过(但从未使用过的)的一些是
对于纯C(Ansi或其他)中的容器的任何意见和/或经验将不胜感激。
答案 0 :(得分:3)
我推荐GLib只是因为它有一套很好的功能,它相对成熟,稳定,便携,并且广泛使用。
答案 1 :(得分:0)
您或图书馆作家可以在每次要将其用于不同类型时编写容器等,可能将定义放入巨大的宏中,或者您可以将void *
用于容器,从而失去所有希望类型安全,有时一些表现。 (C的qsort
函数的效率远低于C ++的sort
模板。)无法在C语言中获得C ++容器,迭代器和算法的等价物。
我对Glib知之甚少,你对Linux内核头文件中不同元素的引用有点模糊。您提到的Linux列表可能是您所获得的典型代码:没有类型安全性和一组编写良好的函数,这些函数将针对每种数据类型进行不同的命名。快速浏览一下iMatix没有透露任何容器。