【问题标题】:Is there a Microsoft C based list collection?是否有基于 Microsoft C 的列表集合?
【发布时间】:2009-08-26 18:28:16
【问题描述】:

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

我知道 C++ 集合,但我想知道 Microsoft 是否有某种类型的基于 C 的 List 结构,如 linux 内核提供的,我可以在用户模式项目中使用?

我宁愿不自己滚动。

【问题讨论】:

标签: c windows


【解决方案1】:

Windows API 中唯一的东西是互锁的单链表,通过 InterlockedPushEntrySList 和 InterlockedPopEntrySList 使用。

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

许多算法书籍和网站都包含可以轻松移植到 C 的链表的实现。自己动手并不难。

【讨论】:

  • _LIST_ENTRY 确实在用户模式和内核模式之间共享 (ntdef.h)。
【解决方案2】:

可重用集合在 C 中很难,它只是没有灵活性或元数据(你怎么知道你什么时候溢出这个数组列表并需要重新分配?如果其余代码正在使用,重新分配将如何工作自定义分配?

你可以做到(你可以在 c 中做任何事情),但它变得非常抽象。

另一方面,自己在 c 中创建一个链表是非常有趣的。数组已经存在,哈希很烦人但并非不可能,树很有趣,...

另外——使用 c 语言思考的人往往会不断优化。将每个链表操作设置在函数调用之后而不是仅使用 this=this.next 可能会让他们中的许多人感到厌恶(理所当然)。

【讨论】:

  • 我将清理我编写的一些旧代码,看看它有多糟糕。我可能会花几个小时写一个新的。
猜你喜欢
  • 1970-01-01
  • 2018-03-15
  • 2015-01-09
  • 1970-01-01
  • 2019-07-06
  • 1970-01-01
  • 2021-07-26
  • 1970-01-01
  • 2016-04-26
相关资源
最近更新 更多