Класс deque
Класс deque (double-ended queue) - это контейнер из стандартной библиотеки C++, который позволяет добавлять и удалять элементы с обоих концов за константное время. В отличие от vector, который эффективно работает только с концом, deque обеспечивает быстрый доступ к элементам по индексу и эффективные вставки/удаления в начале и в конце. В первом параметре шаблона указывается тип хранимых элементов, во втором (необязательном) - аллокатор памяти.
Синтаксис
#include <deque>
std::deque<Type> name;
std::deque<Type> name(size);
std::deque<Type> name(size, value);
std::deque<Type> name = {value1, value2, ...};
Пример
Давайте создадим двустороннюю очередь из 5 целых чисел и выведем её элементы:
#include <iostream>
#include <deque>
using namespace std;
int main()
{
deque<int> deq = {1, 2, 3, 4, 5};
for (int elem : deq) {
cout << elem << " ";
}
cout << endl;
return 0;
}
Результат выполнения кода:
1 2 3 4 5
Пример
Давайте добавим элементы в начало и конец очереди с помощью методов push_front и push_back:
#include <iostream>
#include <deque>
using namespace std;
int main()
{
deque<int> deq = {3, 4, 5};
deq.push_front(2);
deq.push_front(1);
deq.push_back(6);
for (int elem : deq) {
cout << elem << " ";
}
cout << endl;
return 0;
}
Результат выполнения кода:
1 2 3 4 5 6
Пример
Давайте удалим элементы с начала и конца очереди с помощью методов pop_front и pop_back:
#include <iostream>
#include <deque>
using namespace std;
int main()
{
deque<int> deq = {1, 2, 3, 4, 5};
deq.pop_front();
deq.pop_back();
for (int elem : deq) {
cout << elem << " ";
}
cout << endl;
return 0;
}
Результат выполнения кода:
2 3 4
Пример
Давайте получим доступ к элементам по индексу с помощью метода at и оператора [], а также узнаем размер очереди с помощью метода size:
#include <iostream>
#include <deque>
using namespace std;
int main()
{
deque<int> deq = {10, 20, 30, 40, 50};
cout << "Element at index 2: " << deq.at(2) << endl;
cout << "Element at index 4: " << deq[4] << endl;
cout << "Size: " << deq.size() << endl;
return 0;
}
Результат выполнения кода:
"Element at index 2: 30"
"Element at index 4: 50"
"Size: 5"
Смотрите также
-
метод
push_back,
который добавляет элемент в конец очереди -
метод
push_front,
который добавляет элемент в начало очереди -
метод
pop_back,
который удаляет элемент с конца очереди -
метод
pop_front,
который удаляет элемент с начала очереди