经过一年多的时间的摸索,终于找到了一种比较完美的撤销和重做(Undo和Redo)的C++实现方案,因为现在很多的应用程序都需要这种功能,所以我将我的经历写出来让大家分享,同时也能够让更多的人帮助我来更加完善这种架构,同时也能够让更多的人能够利用这种架构更好的完成它的程序。这种架构充分利用了STL的容器和算法来简化代码,因此有着比较高的正确性和可读性。
在解析我的架构之前先分析一下(我所知道的)目前存在的一些实现撤销和重做的方案的优缺点。当前存在的撤销和重做的方案主要是:
在解析我的架构之前先分析一下(我所知道的)目前存在的一些实现撤销和重做的方案的优缺点。当前存在的撤销和重做的方案主要是:
|
撤销和重做方案
|
优点和缺点
|
| 将整个应用程序的状态序列化到文件 | 撤销和重做的步骤数量一般不多,最常见的是只能够撤销和重做一步,因为步骤多了会占用非常多的磁盘空间,同时撤销和重做的操作消耗时间也非常多,但是代码组织却非常简单 |
| 自定义分配器管理内存池的方法 | 有着非常复杂的内存分配算法,代码不容易理解,使用也有点不方便,方法和上面的序列化方案类似,只不过序列化到了内存中,代码组织也非常简单 |
| 仿函数保存反操作的方法 |

本文介绍了如何使用C++实现撤销和重做功能的高效方案,通过STL容器和算法简化代码,提高正确性和可读性。分析了现有撤销/重做机制的优缺点,并提出一种避免大量编写反操作代码的架构,以库形式提供,方便开发者使用。

3697

被折叠的 条评论
为什么被折叠?



