Библиотека C ++ - <deque>
Введение
Deque - это аббревиатура от Dдвойной Ended Queуэ. Это контейнер последовательности, который может изменять размер во время выполнения. Контейнер - это объект, содержащий данные одного типа. Контейнеры последовательности хранят элементы строго в линейной последовательности.
Элементы deque могут быть разбросаны по разным блокам памяти. Контейнер хранит необходимую информацию, чтобы обеспечить прямой доступ к любому элементу в постоянное время. В отличие от векторов, deque не гарантирует, что все элементы будут храниться в непрерывных ячейках памяти. Следовательно, он не разрешает прямой доступ к данным путем смещения указателей. Но он обеспечивает прямой доступ к любому элементу с помощью оператора индекса [].
Deque может сжиматься или расширяться по мере необходимости с обоих концов во время выполнения. Требования к хранилищу автоматически выполняются внутренним распределителем . Deque предоставляет те же функции, что и векторы, но обеспечивает эффективный способ вставки и удаления данных с любого конца.
Также действительны дека нулевого размера. В этом случае deque.begin () и deque.end () указывают на одно и то же место. Но поведение вызова front () или back () не определено.
Определение
Ниже приведено определение std :: deque из заголовочного файла <deque>.
template < class T, class Alloc = allocator<T> > class deque;
Параметры
T - Тип содержащегося элемента.
T может быть заменен любым другим типом данных, включая тип, определенный пользователем.
Alloc - Тип объекта распределителя.
По умолчанию используется шаблон класса распределителя, который определяет простейшую модель распределения памяти и не зависит от значения.
Типы участников
Следующие типы членов могут использоваться как параметры или возвращаемый тип функциями-членами.
Sr. No. | Типы участников | Определение |
---|---|---|
1 | тип ценности | T (Первый параметр шаблона) |
2 | allocator_type | Alloc (Второй параметр шаблона) |
3 | Справка | тип ценности& |
4 | const_reference | const value_type & |
5 | указатель | тип ценности* |
6 | const_pointer | const value_type * |
7 | итератор | итератор произвольного доступа к value_type |
8 | const_iterator | итератор произвольного доступа к const value_type |
9 | reverse_iterator | std :: reverse_iterator <итератор> |
10 | const_reverse_iterator | std :: reverse_iterator <const_iterator> |
11 | size_type | size_t |
12 | разница_тип | ptrdiff_t |
Функции из <deque>
Ниже приведен список всех методов из заголовка <deque>.
Конструкторы
Sr. No. | Метод и описание |
---|---|
1 | deque :: deque конструктор по умолчанию Создает пустую двухстороннюю очередь с нулевым элементом. |
2 | deque :: deque fill конструктор создать новую двухстороннюю очередь из n элементов и присвоить val каждому элементу двухсторонней очереди |
3 | deque :: deque конструктор диапазона Создает двухстороннюю очередь с таким количеством элементов, как в диапазоне от первого до последнего . |
4 | deque :: deque конструктор копирования Создает двухстороннюю очередь с копией каждого элемента, присутствующего в существующем контейнере. |
5 | deque :: deque конструктор перемещения Создает двухстороннюю очередь с содержимым другого, используя семантику перемещения. |
6 | deque :: deque конструктор списка инициализаторов Создает двухстороннюю очередь из списка инициализации. |
Деструктор
Sr. No. | Метод и описание |
---|---|
1 | дек :: ~ дек Уничтожает объект deque, освобождая его память. |
Функции-члены
Sr. No. | Метод и описание |
---|---|
1 | deque :: назначить версию диапазона Присвойте новые значения элементам двухсторонней очереди, заменив старые. |
2 | deque :: назначить версию заполнения Присвойте новые значения элементам двухсторонней очереди, заменив старые. |
3 | deque :: assign инициализатор версии списка Присвойте новые значения элементам двухсторонней очереди, заменив старые. |
4 | deque :: at Возвращает ссылку на элемент, присутствующий в позиции n в двухсторонней очереди. |
5 | deque :: назад Возвращает ссылку на последний элемент двухсторонней очереди. |
6 | deque :: begin Вернуть итератор произвольного доступа, указывающий на первый элемент двухсторонней очереди. |
7 | deque :: cbegin Возвращает постоянный итератор произвольного доступа, который указывает на начало двухсторонней очереди. |
8 | deque :: cend Возвращает постоянный итератор произвольного доступа, который указывает на начало двухсторонней очереди. |
9 | deque :: clear Уничтожает двухстороннюю очередь, удаляя все элементы из двухсторонней очереди, и устанавливает размер двухсторонней очереди равным нулю. |
10 | deque :: crbegin Возвращает постоянный обратный итератор, указывающий на начало контейнера в обратном порядке. |
11 | deque :: crend Возвращает постоянный обратный итератор, который указывает на обратный конец двухсторонней очереди. |
12 | deque :: emplace Расширяет контейнер, вставляя новый элемент в позицию . |
13 | deque :: emplace_back Вставляет новый элемент в конец двухсторонней очереди. |
14 | deque :: emplace_front Вставляет новый элемент в начало двухсторонней очереди. |
15 | deque :: empty Проверяет, пуста ли двухсторонняя очередь. |
16 | deque :: end Возвращает итератор, который указывает на последний элемент в контейнере двухсторонней очереди. |
17 | deque :: стереть позицию версии Удаляет отдельный элемент из двухсторонней очереди. |
18 | deque :: стереть версию диапазона Удаляет отдельный элемент из двухсторонней очереди. |
19 | deque :: front Возвращает ссылку на первый элемент двухсторонней очереди. |
20 | deque :: get_allocator Возвращает распределитель, связанный с двухсторонней очередью |
21 год | deque :: вставить одноэлементную версию Расширяет контейнер, вставляя новый элемент в позицию. |
22 | deque :: вставить версию заполнения Расширяет контейнер, вставляя новый элемент в контейнер. |
23 | deque :: вставить версию диапазона Расширяет контейнер, вставляя новый элемент в контейнер. |
24 | deque :: insert переместить версию Расширяет контейнер, вставляя новый элемент в контейнер. |
25 | deque :: вставить версию списка инициализаторов Расширяет контейнер, вставляя новый элемент в контейнер. |
26 | deque :: max_size Возвращает максимальное количество элементов, которое может удерживать deque. |
27 | deque :: operator = копировать версию Назначьте двухсторонней очереди новое содержимое, заменив старое и изменив размер при необходимости. |
28 | deque :: operator = переместить версию Назначьте двухсторонней очереди новое содержимое, заменив старое и изменив размер при необходимости. |
29 | deque :: operator = версия списка инициализаторов Назначьте двухсторонней очереди новое содержимое, заменив старое и изменив размер при необходимости. |
30 | deque :: operator [] Возвращает ссылку на элемент, присутствующий в местоположении n . |
31 год | deque :: pop_back Удаляет последний элемент из двухсторонней очереди и уменьшает размер двухсторонней очереди на единицу. |
32 | deque :: pop_front Удаляет первый элемент из двухсторонней очереди и уменьшает размер двухсторонней очереди на единицу. |
33 | deque :: push_back Вставляет новый элемент в конец двухсторонней очереди и увеличивает размер двухсторонней очереди на единицу. |
34 | deque :: push_back версия перемещения Вставляет новый элемент в конец двухсторонней очереди и увеличивает размер двухсторонней очереди на единицу. |
35 год | deque :: push_front Вставляет новый элемент в начало двухсторонней очереди и увеличивает ее размер на единицу. |
36 | deque :: push_front версия перемещения Вставляет новый элемент в начало двухсторонней очереди и увеличивает ее размер на единицу. |
37 | deque :: rbegin Возвращает обратный итератор, который указывает на последний элемент двухсторонней очереди. |
38 | deque :: rend Возвращает обратный итератор, который указывает на обратный конец двухсторонней очереди. |
39 | deque :: resize Изменяет размер двухсторонней очереди. |
40 | deque :: изменение размера значения версии Изменяет размер двухсторонней очереди. |
41 год | deque :: shrink_to_fit Запрашивает контейнер уменьшить его емкость до его размера. |
42 | deque :: size Возвращает количество элементов, присутствующих в двухсторонней очереди. |
43 год | deque :: swap Меняет содержимое двухсторонней очереди с содержимым другой двухсторонней очереди x . |
Перегруженные функции, не являющиеся членами
Sr. No. | Метод и описание |
---|---|
1 | оператор == Проверяет, равны ли две дека. |
2 | оператор! = Проверяет, равны ли две дека. |
3 | оператор < Проверяет, меньше ли первая двухсторонняя очередь, чем другая. |
4 | оператор <= Проверяет, меньше ли первая двухсторонняя очередь другой или нет. |
5 | оператор> Проверяет, больше ли первая двухсторонняя очередь другой. |
6 | оператор> = Проверяет, больше ли первая двухсторонняя очередь другой или нет. |
7 | замена Меняет содержимое двух дек. |