algorithm - 未保存更改检测的实现

标签 algorithm language-agnostic save savechanges

检测文本/图像/数据文件中未保存更改的三种方法可能是:

  1. 每次用户进行更改或保存时都会更新 bool 标志,这会导致大量不必要的更新。

  2. 保留原始文件的缓存副本,并在每次需要检查保存操作时比较两者。

  3. 根据需要保留所有过去操作和压入/弹出操作的堆栈,从而导致大量额外的内存使用。

一般来说,商业应用程序如何检测是否存在未保存的更改以及每种方法的优点/缺点是什么?我在编写具有特殊保存行为的自定义应用程序时遇到了这个问题,并且想知道是否有已知的最佳实践。

最佳答案

只要您需要撤消/重做系统,您就需要过去操作的堆栈。为了检测文档所处的状态,堆栈的一项被设置为“已保存状态”。当前堆栈节点不是该项,文档已更改。

您可以在 Qt QUndoStack( http://doc.qt.nokia.com/stable/qundostack.html ) 及其 isClean()setClean() 中看到这样的示例

对于命题 1,更新 bool 值不成问题,而且只需要很少的时间。

关于algorithm - 未保存更改检测的实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7670845/

相关文章:

language-agnostic - 抽象基类何时可以拥有(非静态)数据成员?

algorithm - 如何在点集/二维形状中找到 "central" anchor ?

algorithm - 生成所有 n 位序列以及所有唯一的 k 位子序列。

algorithm - 排序和负载均衡

算法谜题 : sequence with random access, 插入和移除

language-agnostic - 避免处理器中的时序问题

java - 执行时间和大 O

ios - 在 iPhone/iPad 应用程序中保存用户设置

javascript - PhoneGap Build - 如何将文件保存到移动设备?

Java:在不指定目录的情况下访问文件