c# - 用于托管语言的 Judy 数组

标签 c# arrays data-structures managed

Judy array是一种快速数据结构,可以表示一个稀疏数组或一组值。是否有针对 C# 等托管语言的实现?谢谢

最佳答案

值得注意的是,如果您在谷歌上搜索它们,它们通常被称为 Judy Trees 或 Judy Tries。

我还寻找了 .Net 实现,但一无所获。 还值得注意的是:

该实现主要围绕高效缓存使用而设计,因为此类实现细节可能高度依赖于子结构中使用的某些构造的大小。 .Net 托管实现在这方面可能有些不同。

我可以看到一些重大障碍(我的简短扫描可能遗漏了更多障碍)

  • API 有一些相当反 OO 的方面(例如,空指针被视为一棵空树)如此简单,将状态指针移动到 LHS 并将函数实例方法转换为 C++ 是行不通的。
  • 我看到的子结构的实现大量使用了指针。我看不到这些被有效地翻译成托管语言的引用。
  • 实现是许多非常复杂的想法的提炼,掩盖了公共(public) api 的简单性。
  • 代码库大约有 20K 行(大部分都很复杂),我觉得这不是一个简单的移植。

您可以使用该库并将 C 代码包装在 C++/CLI 中(可能只是在内部保存一个指针,即 c api trie,并让所有 c 调用都指向这个)。这将提供一个简单的实现,但 native 实现的链接库可能有问题(内存分配也可能有问题)。 您可能还需要在转换时将 .Net 字符串转换为普通的旧字节*(或者直接使用字节)

关于c# - 用于托管语言的 Judy 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/550204/

相关文章:

android - Array 中的图像和声音通过单击 Android 中的下一步按钮来更改

algorithm - Geohash 边界框搜索

c# - 如何将表格动态插入到另一个表格的表格单元格中?

c# - 该断点当前不会命中 wcf 服务。无法加载符号

c# - XmlSerializer + 多态性

c# - await 语句与表达式

java - 可以数组。 sort 对已添加到数组中的枚举进行排序。?

arrays - 在数组中查找下一个更大的元素

ruby - 如何使用 Ruby 存储和检索值?

C:深度复制 - 具有空指针的结构