C ++

Как использовать очередь C ++

Как использовать очередь C ++

Вступление

Очередь - это набор элементов, где первый элемент, добавленный в список, должен быть первым элементом, который будет удален следующим. По мере того, как предметы добавляются в коллекцию, она увеличивается в размерах, i.е. он растет в длину. Всякий раз, когда какой-либо элемент должен быть удален, он должен быть добавлен первым. Если элементы удаляются непрерывно, то следующий удаляемый является вторым элементом; третий потом удаляется и т. д.

После того, как первый элемент исходного списка был удален, второй становится первым элементом. После удаления второго элемента третий становится первым и т. Д.

Хороший пример очереди из реальной жизни - это когда люди выстраиваются в очередь, чтобы дождаться обслуживания или хорошего. Первый человек обслуживается первым перед последним. Однако очередь, о которой говорилось в этом руководстве, - это очередь программного обеспечения, разработанная в C++.

ФИФО

FIFO расшифровывается как First-In, First-Out. Это еще один способ оценить очередь. Это означает, что первый элемент, который войдет в список, будет первым элементом, который будет удален всякий раз, когда удаление должно происходить. Начало списка называется головным или передним; конец списка называется спиной или хвостом.

Основные операции

Программная очередь должна иметь как минимум следующие операции:

толкать

Эта операция добавляет новый элемент в конец очереди. Эта операция официально называется enqueue.

сдвиг

Эта операция удаляет первый элемент очереди, а второй элемент становится новым первым элементом. Эта операция официально называется dequeue. Это называется поп на C++.

В этой статье объясняется, как использовать структуру данных очереди C ++. Вы должны знать указатели и ссылки C ++, чтобы понять остальную часть этой статьи.

Класс и объекты

Класс - это набор переменных и функций, которые работают вместе, где переменные не имеют значений, присвоенных. Когда переменным присваиваются значения, класс становится объектом. Различные значения, присвоенные одному и тому же классу, приводят к разным объектам; то есть разные объекты относятся к одному классу с разными значениями. Говорят, что создание объекта из класса создает экземпляр объекта.

Имя, очередь, это класс. Объект, созданный из класса очереди, имеет имя, выбранное программистом.

Функция, принадлежащая классу, необходима для создания экземпляра объекта из класса. В C ++ эта функция имеет то же имя, что и имя класса. Объекты, созданные (экземпляры) из класса, имеют разные имена, данные им программистом.

Создание объекта из класса означает создание объекта; это также означает создание экземпляра.

Программа на C ++, использующая класс очереди, начинается со следующих строк вверху файла:

#включать
#включать
используя пространство имен std;

Первая строка предназначена для ввода / вывода. Вторая строка позволяет программе использовать все функции класса очереди. Третья строка позволяет программе использовать имена в стандартном пространстве имен.

Перегрузка функции

Когда две или более разных сигнатур функций имеют одно и то же имя, это имя считается перегруженным. Когда вызывается одна функция, количество и тип аргументов определяют, какая функция фактически выполняется.

Строительство

очередь название()

Следующее объявление создает экземпляр очереди с именем que типа int.

очередь que;

Очередь пуста. Объявление начинается с зарезервированного слова, очередь, за которой следуют угловые скобки с типом данных. Затем у вас есть имя программиста для очереди.

Конструирование с использованием списка инициализаторов

Следующее определение показывает, как создать очередь со списком инициализаторов:

очередь que (1.1, 2.2, 3.3, 4.4);

Уничтожение очереди

Чтобы уничтожить очередь, просто отпустите ее.

Доступ к элементу очереди

push (значение)

Очередь - это список в порядке очереди. Итак, каждое значение добавляется с обратной стороны. Следующий сегмент кода создает пустую очередь, после которой сзади добавляются пять значений с плавающей запятой:

очередь que;
que.толкать (1.1);
que.толкать (2.2);
que.толкать (3.3);
que.толкать (4.4);
que.толкать (5.5);

size () const

Это возвращает количество элементов в очереди. Следующий код иллюстрирует:

очередь que;
que.толкать (1.1); que.толкать (2.2); que.толкать (3.3); que.толкать (4.4); que.толкать (5.5);
cout << que.size() << '\n';

Выход 5.

фронт()

Это возвращает ссылку на первый элемент очереди, не удаляя элемент. Результатом следующего кода является 1.1.

очередь que;
que.толкать (1.1); que.толкать (2.2); que.толкать (3.3); que.толкать (4.4); que.толкать (5.5);
cout << que.front() << '\n';

Элемент не удаляется из очереди.

фронт () const

Когда конструкции очереди предшествует const, выражение «front () const» выполняется вместо «front ()». Он используется в следующем коде, например.

константная очередь que (1.1, 2.2, 3.3, 4.4, 5.5);
cout << que.front() << '\n';

Возвращается постоянная ссылка. Элемент не удаляется из вектора. Элементы очереди не могут быть изменены.

назад()

Это возвращает ссылку на последний элемент очереди, не удаляя элемент. Результатом следующего кода является 5.5.

очередь que;
que.толкать (1.1); que.толкать (2.2); que.толкать (3.3); que.толкать (4.4); que.толкать (5.5);
cout << que.back() << '\n';

назад () const

Когда конструкции очереди предшествует const, выражение «back () const» выполняется вместо «back ()». Он используется в следующем коде, например.

константная очередь que (1.1, 2.2, 3.3, 4.4, 5.5);
cout << que.back() << '\n';

Возвращается постоянная ссылка. Элемент не удаляется из очереди. С предыдущей константой для построения очереди элементы в очереди не могут быть изменены.

Емкость очереди

size () const

- см. выше

пустой () const

Это возвращает 1 для истины, если в очереди нет элементов, или 0 для false, если очередь пуста. Следующий код иллюстрирует это:

очередь que1 (1.1, 2.2, 3.3, 4.4, 5.5);
cout << que1.empty() << '\n';
очередь que2;
cout << que2.empty() << '\n';

Результат:

0
1

Модификаторы очереди

поп ()

Очередь - это FIFO, поэтому любой элемент, который необходимо удалить, должен быть удален с вершины (заголовка) очереди. Эта функция-член удаляет первый элемент, не возвращая его. Следующий код иллюстрирует это:

очередь que (1.1, 2.2, 3.3, 4.4, 5.5);
cout << que.front() << '\n';
que.pop ();
cout << que.size() << '\n';

Результат:

1.1
4

а.своп (б)

Две очереди можно поменять местами, как показано в этом сегменте кода:

очередь que1 (1.1, 2.2, 3.3, 4.4, 5.5);
очередь que2 (10, 20);
que1.своп (que2);
cout << "First element and size of que1:
"<< que1.front() <<", "<< que1.size() << '\n';
cout << "First element and size of que2 "<<
que2.фронт() <<", "<< que2.size() << '\n';

Результат:

Первый элемент и размер que1: 10, 2

Первый элемент и размер que2: 1.1, 5

Обратите внимание, что длина очереди при необходимости увеличивается. Также значения, у которых не было замен, заменяются некоторым значением по умолчанию. Типы данных должны быть одного типа.

Операторы равенства и отношения для очередей

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

Операторы равенства

Возвращает 1 для истины и 0 для ложи.

Оператор ==

Возвращает 1, если две очереди имеют одинаковый размер и соответствующие элементы равны; в противном случае возвращается 0. Пример:

очередь que1 ("вид", "что-то еще");
очередь que2 ("злой");
int num = que1 == que2;
cout << num << '\n';

Результат: 0.

В != Оператор

- противоположно вышеупомянутому. Пример:

очередь que1 ("вид", "что-то еще");
очередь que2 ("злой");
int число = que1 != que2;
cout << num << '\n';

Результат: 1.

Операторы отношения

Возвращает 1 для истины и 0 для ложи.

В < Operator

Возвращает 1, если первая очередь является начальным подмножеством второй очереди, причем элементы двух равных частей одинаковы и находятся в одном порядке. Если обе очереди имеют одинаковый или разные размеры и движутся слева направо, в первой очереди встречается элемент, который меньше соответствующего элемента во второй очереди, то все равно будет возвращено 1. В противном случае возвращается 0. Пример:

очередь que1 ("вид", "что-то еще");
очередь que2 ("злой");
int число = que1 < que2;
cout << num << '\n';

Выход 1. < does not include the case when the size and order are the same.

Оператор>

- противоположно вышеупомянутому. Пример:

очередь que1 ("вид", "что-то еще");
очередь que2 ("злой");
int num = que1> que2;
cout << num << '\n';

Выход: 0

В <= Operator

- такой же как < but includes the case when the size and order are the same. Example:

очередь que1 ("вид", "что-то еще");
очередь que2 ("злой");
int число = que1 <= que2;
cout << num << '\n';

Выход: 1

Оператор> =

- противоположно вышеупомянутому. Пример:

очередь que1 ("вид", "что-то еще");
очередь que2 ("злой");
int num = que1> = que2;
cout << num << '\n';

Выход: 0

Класс и его экземпляры

Значение относится к типу данных, как созданный объект относится к классу. Конструкция очереди также может принимать класс как тип данных. Следующая программа иллюстрирует это:

#включать
#включать
используя пространство имен std;
класс TheCla

общественность:
int num;
static char ch;
void func (char cha, const char * str)

cout << "There are " << num << " books worth " << cha << str << " in the store." << '\n';

статическая пустота весело (char ch)

если (ch == 'a')
cout << "Official static member function" << '\n';

;
int main ()

TheCla obj1; TheCla obj2; TheCla obj3; TheCla obj4; TheCla obj5;
очередь que;
que.push (obj1); que.push (obj2); que.push (obj3); que.push (obj4); que.push (obj5);
cout << que.size() << '\n';
возврат 0;

Выход 5.

Связанный список

Список очереди технически называется связанным списком. Для очереди есть два типа связанных списков: односвязный список и двусвязный список.

Элемент односвязного списка может быть реализован структурой из двух членов. Один член содержит указатель на следующий элемент, а другой член содержит данные (в единственном числе для данных).

Элемент двусвязного списка может быть реализован структурой из трех членов. Средний элемент содержит данные, а первый и третий элементы содержат указатели на соседние элементы.

Приложения очереди

Очередь - это структура данных в порядке очереди. В вычислениях бывают ситуации, когда данные поступают в виде очереди, что требует поведения в порядке очереди.

Совместное использование компьютерных ресурсов

Ресурс на компьютере - это любой физический или виртуальный компонент с ограниченной доступностью. К ним относятся ЦП, видеокарта, жесткий диск и память. Для совместного использования такого ресурса нужна очередь.

Обработка прерываний

Периферийные устройства компьютера должны время от времени прерывать работу компьютера. Прерывания должны обрабатываться так же, как они поступили. Для этого нужна очередь.

Управлять информацией.

Очередь может использоваться, например, для управления файлами приложения для задания, если файлы хранятся на компьютере.

Заключение

Очередь - это структура данных списка, которая является либо односвязным списком, либо двусвязным списком. Как правило, первый элемент, который входит в список, является первым элементом, который выходит. C ++ предоставляет структуру данных очереди в своей стандартной библиотеке. Категории функций-членов и операторов, доступных для этой структуры, включают построение очереди, доступ к элементам очереди, емкость очереди, модификаторы очереди и операторы перегруженной очереди.

Любая структура данных очереди должна обеспечивать как минимум функции-члены push () и pop (). push () означает отправку нового элемента в конец очереди; а pop () означает удаление элемента, который находится в начале очереди. К сожалению, в C ++ эти функции не возвращают значение, отправленное или извлеченное. Итак, чтобы узнать последний элемент перед нажатием, необходимо использовать дополнительную функцию back (); и чтобы узнать первый элемент перед появлением, необходимо использовать дополнительную функцию front ().

Значение относится к типу данных, как созданный объект относится к классу. Таким образом, конкретный класс может использоваться в качестве типа данных для создания экземпляра шаблона очереди. Разные объекты класса становятся разными значениями класса.

В очереди есть приложения на компьютере. Его можно использовать, например, для управления файлами приложения для задания, если файлы хранятся на компьютере.

Chrys

Как изменить направление прокрутки мыши и сенсорной панели в Windows 10
Мышь а также Сенсорная панельs не только упрощают вычисления, но и делают их более эффективными и требуют меньше времени. Мы не можем представить себе...
Как изменить указатель мыши и размер курсора, цвет и схему в Windows 10
Указатель мыши и курсор в Windows 10 - очень важные аспекты операционной системы. То же самое можно сказать и о других операционных системах, так что,...
Бесплатные движки с открытым исходным кодом для разработки игр для Linux
В этой статье будет рассмотрен список бесплатных игровых движков с открытым исходным кодом, которые можно использовать для разработки 2D- и 3D-игр в L...