Дата публикации:
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()
, которые создают снимок и восстанавливают содержимое вектора соответственно.
Пример использования показывает, как создать снимок вектора, изменить его содержимое и затем восстановить исходное состояние с помощью снимка.
Свежие комментарии