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