代码之家  ›  专栏  ›  技术社区  ›  Casey

是否有基于Microsoft C的列表集合?

  •  1
  • Casey  · 技术社区  · 15 年前

    我正在使用 C 不是 C++!

    我知道C++集合,但我想知道微软是否有一种基于C的列表结构,比如Linux内核提供的,我可以在用户模式项目中使用它吗?

    我不想自己滚。

    2 回复  |  直到 6 年前
        1
  •  0
  •   Bill K    15 年前

    可重用集合在C中很难实现,它没有灵活性或元数据(您如何知道何时溢出此数组列表并需要重新分配)?如果其余代码使用自定义alloc,重新分配如何工作?

    你可以做它(你可以用C语言做任何事情),但它很快就抽象了。

    另一方面,用C语言自己创建一个链接列表是非常有趣的。数组已经存在,散列是烦人的,但并非不可能,树是有趣的,…

    而且,在C语言中思考的人倾向于不断优化。在函数调用后面设置每个链表操作,而不是只使用this=this.next可能会使许多函数调用感到恶心(正确地说是这样)。

        2
  •  3
  •   0xC0000022L    6 年前

    在WindowsAPI中,唯一的东西是通过 InterlockedPushEntrySList InterlockedPopEntrySList .

    对于设备驱动程序,有 LIST_ENTRY ,但我不确定是否可以将其拉入用户模式。

    许多算法书籍和网站包含链接列表的实现,这些列表可以很容易地移植到C中。滚动自己的列表并不太困难。