На этом шаге мы перечислим основные операции над деками.
В таблицах 1 - 3 перечислены все операции, поддерживаемые деками.
Операция | Описание |
---|---|
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>() | Уничтожает все элементы и освобождает память |
Операция | Описание |
---|---|
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() | Возвращает обратный итератор для позиции за последним элементом при переборе в обратном направлении |
Операция | Описание |
---|---|
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 шаг.
При работе с деками необходимо учитывать следующее.
На следующем шаге мы рассмотрим обработку исключений в деках.