Я хочу создать 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?