/*
Разработать класс, реализующий структуру данных дек.
Реализовать метод, который определяет, что элементы, извлекаемые из левого конца дека, включались в правый конец дека.
Значением элементов дека являются строки ограниченной длины.
*/
#include <iostream>
#include <deque>
#include <string>
using namespace std;
class StringDeque {
private:
deque<string> data;
public:
// Добавление элемента в правый конец дека
void pushRight(const string& element);
// Извлечение элемента из левого конца дека
string popLeft();
// Проверка, были ли извлеченные элементы добавлены в правый конец дека
bool isRightSequence(const deque<string>& sequence);
};
// Добавление элемента в правый конец дека
void StringDeque::pushRight(const string& element) {
data.push_back(element);
}
// Извлечение элемента из левого конца дека
string StringDeque::popLeft() {
string element = data.front();
data.pop_front();
return element;
}
// Проверка, были ли извлеченные элементы добавлены в правый конец дека
bool StringDeque::isRightSequence(const deque<string>& sequence) {
if (sequence.size() > data.size()) {
return false; // Последовательность длиннее дека
}
// Проверяем элементы с правого конца дека
for (int i = 0; i < sequence.size(); ++i) {
if (sequence[i] != data[data.size() - 1 - i]) {
return false; // Элементы не совпадают
}
}
return true; // Последовательность соответствует
}
int main() {
StringDeque dequeBuffer;
dequeBuffer.pushRight("string1");
dequeBuffer.pushRight("string2");
dequeBuffer.pushRight("string3");
deque<string> extracted = {"string3", "string2"};
if (dequeBuffer.isRightSequence(extracted)) {
cout << "Извлеченные элементы были добавлены в правый конец дека" << endl;
} else {
cout << "Извлеченные элементы не были добавлены в правый конец дека" << endl;
}
return 0;
}
To embed this project on your website, copy the following code and paste it into your website's HTML: