我最近为我的程序创建了一个精心设计的撤销/重做机制。它是一个适用于特定XML文件的编辑器。但是,由于某些更改可能会也可能不会更改XML文件中的任何节点数量,因此我目前将整个XML文档备份为克隆。
到目前为止,我一直在使用两个System.Collections.Generic.Stack(Of XmlNode)
对象来存储它们,并且来回跳过的效果非常好。但是现在我想限制一个可以撤消的步骤数量,i。即如果撤消堆栈中的项目数超过某个阈值,我需要丢弃最旧的条目。
我该怎么做?
P.S。:我发现我可能会使用像Deque这样的东西,所以我已经实现了自己的DoubleEndedQueue(Of T)
。我可以轻松地模拟有限的堆栈。但它使用System.Collections.Generic.List(Of T)
,我不知道List.Insert(item, 0)
是高性能O(1)还是O(n)。