Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
OOP_Ekzamen.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
2.04 Mб
Скачать
  1. Двостороння черга (deque). Характеристика та приклад deque.

Двусторонние очереди (или deques) аналогичны векторам, с той разницей, что они позволяют быстро вставлять и удалять элементы и с начала, и с конца контейнера.

Двусторонние очереди C++ обычно реализовываются как динамические массивы, растущие в оба конца. Такая реализация гарантирует доступ законстантное время, вставку и удаление с обоих концов очереди - за амортизированное константное время, вставку и удаление из середины очереди - залинейное время.

Конструкторы

создают двустороннюю очередь и инициализируют ее какими-то данными

Операторы

осуществляют сравнение, присваивание и доступ к элементам двусторонней очереди

assign

присваивает элементы двусторонней очереди

at

возвращает элемент в заданной позиции

back

возвращает ссылку на последний элемент двусторонней очереди

begin

возвращает итератор на начало двусторонней очереди

clear

удаляет все элементы из двусторонней очереди

empty

истина, если двусторонняя очередь пуста

end

возвращает итератор на место после последнего элемента двусторонней очереди

erase

удаляет заданные элементы из двусторонней очереди

front

возвращает ссылку на первый элемент двусторонней очереди

insert

вставляет элементы в двусторонней очереди

max_size

возвращает максимальное число элементов, которое может содержать двусторонняя очередь

pop_back

удаляет последний элемент двусторонней очереди

pop_front

удаляет первый элемент двусторонней очереди

push_back

добавляет элемент в конец двусторонней очереди

push_front

добавляет элемент в начало двусторонней очереди

rbegin

возвращает reverse_iterator на конец двусторонней очереди

rend

возвращает reverse_iterator на начало двусторонней очереди

resize

изменяет размер двусторонней очереди

size

возвращает количество элементов в двусторонней очереди

swap

меняется содержимым данной двусторонней очереди с другой

#include <deque>

deque();

deque( const deque& c );

deque( size_type num, const T& val = T() );

deque( input_iterator start, input_iterator end );

/ создаем двустороннюю очередь из случайных чисел

cout << "первоначальная двусторонняя очередь: ";

deque<int> dq;

for( int i = 0; i < 10; i++ ) {

int num = static_cast<int>(rand() % 10);

cout << num << " ";

dq.push_back( num );

}

cout << endl;

 

// находим первый четный элемент dq

deque<int>::iterator iter1 = dq.begin();

while( iter1 != dq.end() && *iter1 % 2 != 0 ) ++iter1;

 

// находим последний четный элемент dq

deque<int>::iterator iter2 = dq.end();

do {

--iter2;

} while( iter2 != dq.begin() && *iter2 % 2 != 0 );

 

cout << "первый четный элемент: " << *iter1 << ", последний четный элемент: " << *iter2 << endl;

 

cout << "новая двусторонняя очередь: ";

deque<int> dq2( iter1, iter2 );

for( size_t i = 0; i < dq2.size(); i++ ) {

cout << dq2[i] << " ";

}

cout << endl;

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]