C++помогите решить задачу на С++ (код будущего 4 модуль вопрос 4.

Дата публикации: 27.01.2024

C++помогите решить задачу на С++ (код будущего 4 модуль вопрос 4.


C++помогите решить задачу на С++ (код будущего 4 модуль вопрос 4.

Вот решение задачи:

#include <iostream>
#include <vector>

class Memento {
public:
    Memento(const std::vector<int>& data) : data_(data) {}

    std::vector<int> GetData() const {
        return data_;
    }

private:
    std::vector<int> data_;
};

class CustomVector {
public:
    CustomVector() = default;

    void PushBack(int value) {
        data_.push_back(value);
    }

    void PopBack() {
        data_.pop_back();
    }

    void Set(int index, int value) {
        data_[index] = value;
    }

    int Get(int index) const {
        return data_[index];
    }

    Memento CreateMemento() {
        return Memento(data_);
    }

    void Restore(const Memento& memento) {
        data_ = memento.GetData();
    }

private:
    std::vector<int> data_;
};

int main() {
    CustomVector vector;
    vector.PushBack(1);
    vector.PushBack(2);
    vector.PushBack(3);

    Memento memento = vector.CreateMemento();

    vector.PopBack();
    vector.Set(0, 4);

    std::cout << vector.Get(0) << std::endl; // Output: 4
    std::cout << vector.Get(1) << std::endl; // Output: 2

    vector.Restore(memento);

    std::cout << vector.Get(0) << std::endl; // Output: 1
    std::cout << vector.Get(1) << std::endl; // Output: 2

    return 0;
}

В данном решении класс Memento содержит вектор данных data_, который представляет собой снимок содержимого CustomVector. Метод GetData() возвращает копию вектора данных.

Класс CustomVector имеет все необходимые методы для работы с вектором, а также методы CreateMemento() и Restore(), которые создают снимок и восстанавливают содержимое вектора соответственно.

Пример использования показывает, как создать снимок вектора, изменить его содержимое и затем восстановить исходное состояние с помощью снимка.