我想为我的应用程序创建撤消和重做。
这是撤消重做类
const int MAX_NUMBER_OF_UNDO = 8;
class UNDO_REDO
{
private:
std::vector<std::unique_ptr<Sum_UndoRedo>> undo;
int currentNumber;
public:
UNDO_REDO();
void AddUndo(std::unique_ptr<Sum_UndoRedo>);
void Pop_Back_Undo();
}; 每次执行操作时,都会将其存储在撤消向量中。
我想要记录最后8个操作,当撤销向量的大小增加超过8个时,我删除向量的第一个元素,然后将操作推回到向量,并始终保持向量的大小为8,这是最后执行的8个操作。
因为我以前从来没有做过撤销和重做,这是一个好的撤销和重做的方法吗?
由于Erase会在每次执行erase时移动所有矢量元素,我是否有其他方法可以将大小保持为8?
发布于 2020-04-16 18:12:59
Sean Parent有一个很好的方法来处理这个问题,作为这个视频的一部分:https://www.youtube.com/watch?v=QGcVXgEVMJg
https://stackoverflow.com/questions/61116068
复制相似问题