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 确实包括 GHashTable
s,它们基本上是键和值之间的关联——C++ 中的 HashMap。
重要的区别是您必须使用void*
来存储任意数据,因为C 不支持模板或泛型。缺点是编译器无法检查你的代码的有效性,你必须自己确保正确性。
【讨论】:
【参考方案3】:C 永远不可能有这样的东西,因为它没有任何必需的特性——尤其是模板。
【讨论】:
那是无知和偏见,不是你。 C 作为一种图灵完备的语言,它总是可以拥有 C++ 提供的任何东西,尽管可能不是 C++ 提供的。 :)【参考方案4】:您实际上可以在 C 中实现自己的。制作一个结构,给它一个指向其父级的指针并实现一个函数,该函数返回一个指向您的结构实例的指针,并且您在 C 中拥有您的类。如果您有时间并且您知道,您可以尽可能多地进行实际操作怎么做。
【讨论】:
以上是关于C 等价于 C++ STL [重复]的主要内容,如果未能解决你的问题,请参考以下文章