C 等价于 C++ STL [重复]

Posted

技术标签:

【中文标题】C 等价于 C++ STL [重复]【英文标题】:C equivalent of C++ STL [duplicate] 【发布时间】:2012-06-15 18:48:13 【问题描述】:

可能重复:Standard data structure library in C?

C 是否有任何类似于 C++ STL 的数据结构实现?特别是关联容器、哈希映射或任何其他具有近似恒定时间检索的结构?

谢谢!

【问题讨论】:

很多类似的问题:***.com/search?q=[c]+data+structure+library 【参考方案1】:

C 不能拥有 STL 的“完全等价物”,因为 C 没有模板或类。

您可能对“Glib 合集”库感兴趣:

http://www.ibm.com/developerworks/linux/tutorials/l-glib/

Gnome Glib:http://developer.gnome.org/glib/stable/

GNU Gnulib:http://www.gnu.org/software/gnulib/

【讨论】:

Glib 是一个很好的库。 使用宏来生成代码和类型并不难(例如,参见facil.io C STL library)。 C 比大多数人认为的更通用(如果你问我,它有更好的封装性)。 听到有人这么说真是令人耳目一新:C is more versatile than most people give it credit (and it has better encapsulation, if you ask me).我完全同意:)【参考方案2】:

glib 确实包括 GHashTables,它们基本上是键和值之间的关联——C++ 中的 HashMap。

重要的区别是您必须使用void* 来存储任意数据,因为C 不支持模板或泛型。缺点是编译器无法检查你的代码的有效性,你必须自己确保正确性。

【讨论】:

【参考方案3】:

C 永远不可能有这样的东西,因为它没有任何必需的特性——尤其是模板。

【讨论】:

那是无知和偏见,不是你。 C 作为一种图灵完备的语言,它总是可以拥有 C++ 提供的任何东西,尽管可能不是 C++ 提供的。 :)【参考方案4】:

您实际上可以在 C 中实现自己的。制作一个结构,给它一个指向其父级的指针并实现一个函数,该函数返回一个指向您的结构实例的指针,并且您在 C 中拥有您的类。如果您有时间并且您知道,您可以尽可能多地进行实际操作怎么做。

【讨论】:

以上是关于C 等价于 C++ STL [重复]的主要内容,如果未能解决你的问题,请参考以下文章

C++ 等价于 C# 的内部

类属性的 C++ 等价于 Matlab Abstract

C++ 等价于 Java 的 BlockingQueue

C++:string.empty() 是不是总是等价于 string == ""?

JavaScript 等价于 ?? C#中的运算符[重复]

C++ 等价于 Python 的带有比较的数组访问 (array[condition] = value)