C# 数据结构,可以动态调整大小到给定限制的列表,并允许快速访问任何索引

标签 c# list data-structures

我正在为 AI 代理实现一个内存系统。它需要有一个状态转换的内部列表,该列表的上限为某个数字,比如 10000。

如果容量已满,添加新内存应该会自动删除最旧的内存。

重要的是,我还需要能够快速访问此列表中的任何项目。

Queue 的包装器起初看起来很明显,但 Queue 不允许快速访问任何元素。 (O(n))

类似地,从 List 结构的开头删除一个项目需要 O(n)。

LinkedLists 允许快速添加和删除,但同样不允许快速访问每个索引。

数组允许随机访问,但显然它不能动态调整大小并且删除是有问题的。

我看到有人建议使用 HashMap,但我确定如何实现。

建议?

最佳答案

如果你希望队列的长度固定,你可以使用 circular buffer它启用 O(1) 入队、出队和索引操作,并在队列已满时自动覆盖旧条目。

关于C# 数据结构,可以动态调整大小到给定限制的列表,并允许快速访问任何索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38499882/

相关文章:

java - java中二叉树节点的大小

c - 两个链表的交集

c - C 中优先队列的小困惑

c# - 不要从序列化的 DateTime 对象中序列化或删除 TimeZone

C#\Java 和 Java\C# 对客户端\服务器 - 客户端(套接字)关闭时正常断开连接

c# - 从 C# 动态调用非托管代码

java - App Engine 查询,使用集合上的 where

c# - 使用 WPF 在磁盘上存储键/值对

python - 合并 Python 字典

python - 如何将字典列表拆分为多个保持相同索引的列?