Библиотека 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 замена

Меняет содержимое двух дек.