我试图编写一个C++11库,作为实现在原始缓冲区之上实现的一系列更改(修改、插入和删除)的更广泛项目的一部分。然后,目标是能够快速“查看”更改并获取修改后的数据。
我目前的做法是:
这似乎是一个相当困难的任务-有很多事情要处理,我正在快速堆叠复杂的代码!
我确信这一定是在其他软件中已经处理过的问题,但是环顾各种十六进制编辑器等等并没有给我指明一个有用的实现。这个问题是否有一个名称(“数据撤消堆栈”,而朋友们还没有把我弄得太远!),还是一个库,甚至可以作为引用,用于这类事情?
发布于 2016-01-17 04:54:24
我认为最常见的方法(我过去曾成功地使用过)就是简单地存储原始状态,然后将每个更改操作(所做的操作+参数)放在撤销堆栈上。然后,要达到特定的先前状态,您从原始状态开始,并应用所有的更改,除了您想要撤消的更改。
这比试图识别数据的哪些部分更改要容易得多,而且除非操作本身非常耗时(因此很慢地“重放”到原始状态),否则它工作得很好。
发布于 2016-01-17 06:06:58
我会研究持久的数据结构,比如structure和http://www.toves.org/books/persist/#s2,或者从这些结构中搜索术语。我想你可以用一棵持久耐用的树来做这件事,因为它的叶子上有短串。
https://stackoverflow.com/questions/34833999
复制相似问题