【问题标题】:C equivalent of C++ STL [duplicate]C 等价于 C++ STL [重复]
【发布时间】:2023-03-15 10:25:02
【问题描述】:

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

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

谢谢!

【问题讨论】:

标签: c++ c data-structures stl hashmap


【解决方案1】:

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

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

【讨论】:

  • 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 中拥有您的类。如果您有时间并且您知道,您可以尽可能多地进行实际操作怎么做。

    【讨论】:

      猜你喜欢
      • 2011-03-28
      • 2021-07-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-04
      • 2020-04-23
      相关资源
      最近更新 更多