Как записать последовательность событий в векторе - PullRequest
0 голосов
/ 09 апреля 2020

Я хочу создать UNDO и REDO для моего приложения.

это класс UNDO REDO

 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, я удаляю первый элемент вектора и затем pu sh возвращаю действие в вектор и всегда сохраняю размер вектор как 8, который является последними 8 выполненными действиями.

Так как я никогда не делал UNDO и REDO прежде, это хороший способ сделать UNDO и REDO?

Поскольку Erase переместит все элементы вектора каждый раз, когда я выполняю стирание, у меня есть какой-нибудь альтернативный метод, чтобы сохранить размер как 8?

1 Ответ

0 голосов
/ 16 апреля 2020

Шон Родитель имеет отличный способ справиться с этим, представленный как часть этого видео: https://www.youtube.com/watch?v=QGcVXgEVMJg

...