Шаг 143.
Библиотека STL.
Контейнеры STL. Операции над деками

    На этом шаге мы перечислим основные операции над деками.

    В таблицах 1 - 3 перечислены все операции, поддерживаемые деками.

Таблица 1. Конструкторы и деструктор деков
Операция Описание
deque<Elem> с Создает пустой дек, не содержащий ни одного элемента
deque<Elem> с1(c2) Создает копию другого дека того же типа (с копированием всех элементов)
deque<Elem> c(n) Создает дек из n элементов, создаваемых конструктором по умолчанию
deque<Elem> c(n,elem) Создает дек, инициализируемый n копиями эпемента elem
deque<Elem> c(beg,end) Создает дек, инициализируемый элементами интервала [beg,end)
c.~deque<Elem>() Уничтожает все элементы и освобождает память

Таблица 2. Немодифицирующие операции над деками
Операция Описание
c.size() Возвращает фактическое количество элементов
c.empty() Проверяет, пуст ли контейнер (эквивалент size()==0, но иногда выполняется быстрее)
c.max_size() Возвращает максимально возможное количество элементов
c1 == c2 Проверяет равенство c1 и с2
c1 != c2 Проверяет неравенство c1 и с2 (эквивалент !(c1==c2))
c1 < с2 Проверяет, что c1 меньше с2
c1 > с2 Проверяет, что c1 больше с2 (эквивалент c2<c1)
c1 <= с2 Проверяет, что c1 не больше с2 (эквивалент !(c2<c1))
c1 >= с2 Проверяет, что c1 не меньше с2 (эквивалент !(с1<с2))
c.at(idx) Возвращает элемент с индексом idx (при недопустимом значении индекса генерируется исключение out_of_range)
c[idx] Возвращает элемент с индексом idx (без интервальной проверки!)
c.front() Возвращает первый элемент (без проверки его существования!)
c.back() Возвращает последний элемент (без проверки его существования!)
c.rbegin() Возвращает обратный итератор для первого элемента при переборе в обратном направлении
c.rend() Возвращает обратный итератор для позиции за последним элементом при переборе в обратном направлении

Таблица 3. Модифицирующие операции над деками
Операция Описание
c1 = c2 Присваивает c1 все элементы с2
c.assign(n,elem) Присваивает n копий элемента elem
c.assign(beg,end) Присваивает элементы интервала [beg,end)
c1.swap(c2) Меняет местами содержимое c1 и с2
swap(c1,c2) To же, но в форме глобальной функции
c.insert(pos,elem) Вставляет копию elem в позицию итератора pos и возвращает позицию нового элемента
c.insert(pos,n,elem) Вставляет n копий elem в позицию итератора pos (и не возвращает значения)
c.insert(pos,beg,end) Вставляет в позицию итератора pos копию всех элементов интервала [beg,end) (и не возвращает значения)
c.push_back(elem) Присоединяет копию elem в конец дека
c.pop_back() Удаляет последний элемент (не возвращая его)
c.push_front(elem) Вставляет копию elem в начало дека
c.pop_front() Удаляет первый элемент (не возвращая его)
c.erase(pos) Удаляет элемент в позиции итератора pos и возвращает позицию следующего элемента
c.erase(beg,end) Удаляет все элементы из интервала [beg,end) и возвращает позицию следующего элемента
c.resize(num) Приводит контейнер к размеру num (если size() при этом увеличивается, новые элементы создаются своим конструктором по умолчанию)
c.resize(num,elem) Приводит контейнер к размеру num (если size() при этом увеличивается, новые элементы создаются как копии elem)
c.clear() Удаляет все элементы (контейнер остается пустым)

    Операции деков отличаются от операций векторов только в следующих отношениях:

    Поскольку остальные операции остались без изменений, здесь они не рассматриваются. За описаниями обращайтесь на 131 шаг.

    При работе с деками необходимо учитывать следующее.

    На следующем шаге мы рассмотрим обработку исключений в деках.




Предыдущий шаг Содержание Следующий шаг