通用数据结构
该包实现了一些通用数据结构。
array2d
:二维数组。avl
:AVL树。bimap
:双向映射;允许对键和值进行双向查找的映射。btree
:B树。cache
:map[K]V
的包装器,使用最大大小并在满时通过LRU驱逐元素。hashmap
:使用线性探测的哈希映射。主要特点是可以高效复制,底层使用写时复制。hashset
:使用哈希映射作为底层存储的哈希集合。heap
:二叉堆。interval
:区间树,实现为增强的AVL树。list
:双向链表。mapset
:使用Go内置map作为底层存储的集合。multimap
:允许多个条目具有相同键的关联容器。queue
:先进先出(FIFO)队列。rope
:通用绳索数据结构,类似于数组但支持在任何位置高效插入和删除。绳索通常用于字节数组,但这个绳索是通用的。prope
:绳索的持久版本,允许以很少的额外时间或内存保存绳索的不同版本。stack
:后进先出(LIFO)栈。trie
:三叉搜索树。ulist
:展开的双向链表。
请查看各个子包以获取文档和示例。顶层generic
包提供了一些有用的类型和约束。详见DOC.md文档。
贡献
如果您想贡献新功能,请先让我知道您想添加什么(通过电子邮件或问题跟踪器)。以下是一些想法:
- 新的数据结构(布隆过滤器、图结构、并发数据结构、自适应基数树或其他类型的搜索树)。
- 基于这些基准的现有数据结构的基准测试和优化。哈希映射是一个特别好的目标。
- 设计并实现一个好用的迭代器API。
- 改进测试(也许我们可以使用Go的新模糊测试功能)。