0 added
0 removed
Original
2026-01-01
Modified
2026-03-10
1
<ul><li><a>Очередь - это…</a><ul><li><a>Принцип работы</a></li>
1
<ul><li><a>Очередь - это…</a><ul><li><a>Принцип работы</a></li>
2
</ul></li>
2
</ul></li>
3
<li><a>Создание</a></li>
3
<li><a>Создание</a></li>
4
<li><a>Методы</a></li>
4
<li><a>Методы</a></li>
5
<li><a>Создание через массивы</a></li>
5
<li><a>Создание через массивы</a></li>
6
<li><a>Приоритеты</a></li>
6
<li><a>Приоритеты</a></li>
7
</ul><p>Разработка программного обеспечения требует от программиста использования различных инструментов, библиотек, а также структурных элементов. Некоторые задачи предусматривают применение так называемых очередей. Соответствующий элемент встречается в C, С++, C# и других языках разработки.</p>
7
</ul><p>Разработка программного обеспечения требует от программиста использования различных инструментов, библиотек, а также структурных элементов. Некоторые задачи предусматривают применение так называемых очередей. Соответствующий элемент встречается в C, С++, C# и других языках разработки.</p>
8
<p>Далее предстоит познакомиться с компонентом queue C более подробно. Предложенные материалы ориентированы на широкую публику. Они подойдут как разработчикам-новичкам, так и более опытным специалистам.</p>
8
<p>Далее предстоит познакомиться с компонентом queue C более подробно. Предложенные материалы ориентированы на широкую публику. Они подойдут как разработчикам-новичкам, так и более опытным специалистам.</p>
9
<h2>Очередь - это…</h2>
9
<h2>Очередь - это…</h2>
10
<p>Очередь - структура данных, которая содержит в своем составе один или несколько элементов одного и того же типа. Работает она по принципу FIFO ("first in - first out" или "первый вошел - первый вышел"). Отличается от списков и массивов тем, что не поддерживает произвольного доступа к своим элементам. Чтение рассматриваемого "инструмента" осуществляется с первого элемента и до самого конца по порядку.</p>
10
<p>Очередь - структура данных, которая содержит в своем составе один или несколько элементов одного и того же типа. Работает она по принципу FIFO ("first in - first out" или "первый вошел - первый вышел"). Отличается от списков и массивов тем, что не поддерживает произвольного доступа к своим элементам. Чтение рассматриваемого "инструмента" осуществляется с первого элемента и до самого конца по порядку.</p>
11
<p>Стоит обратить внимание на то, что в процессе разработки в очередь нельзя поместить новый элемент произвольно. В данную структуру очередные составляющие записываются только в самый конец. Каждая новая запись заменит последний элемент. В<a>C++</a>для реализации рассматриваемого компонента используется готовый STL-контейнер. Он называется queue.</p>
11
<p>Стоит обратить внимание на то, что в процессе разработки в очередь нельзя поместить новый элемент произвольно. В данную структуру очередные составляющие записываются только в самый конец. Каждая новая запись заменит последний элемент. В<a>C++</a>для реализации рассматриваемого компонента используется готовый STL-контейнер. Он называется queue.</p>
12
<h3>Принцип работы</h3>
12
<h3>Принцип работы</h3>
13
<p>При использовании enqueue первый элемент очереди (тот, что вошел первым), тоже выйдет самым первым. Так, если программист добавит 4 составляющие, первый добавленный "уйдет" тоже первым.</p>
13
<p>При использовании enqueue первый элемент очереди (тот, что вошел первым), тоже выйдет самым первым. Так, если программист добавит 4 составляющие, первый добавленный "уйдет" тоже первым.</p>
14
<p>Для того, чтобы лучше разобраться в принципах работы рассматриваемого элемента разработки, можно представить себе пример из реальной жизни. А именно - очередь в магазине. Покупатель стоит посреди нее. Чтобы оказать напротив кассы, сначала требуется дождаться обслуживания всех впереди стоящих посетителей. Для последнего человека в очереди" требуется, чтобы кассир "поработал" со всеми, кроме него самого.</p>
14
<p>Для того, чтобы лучше разобраться в принципах работы рассматриваемого элемента разработки, можно представить себе пример из реальной жизни. А именно - очередь в магазине. Покупатель стоит посреди нее. Чтобы оказать напротив кассы, сначала требуется дождаться обслуживания всех впереди стоящих посетителей. Для последнего человека в очереди" требуется, чтобы кассир "поработал" со всеми, кроме него самого.</p>
15
<p>Вот - наглядный пример enqueue:</p>
15
<p>Вот - наглядный пример enqueue:</p>
16
<p>Здесь:</p>
16
<p>Здесь:</p>
17
<ol><li>Расположены 7 чисел.</li>
17
<ol><li>Расположены 7 чисел.</li>
18
<li>Если требуется извлечь данные, делать это придется в том же порядке, в котором они располагаются на рисунке выше.</li>
18
<li>Если требуется извлечь данные, делать это придется в том же порядке, в котором они располагаются на рисунке выше.</li>
19
<li>Для получения элемента со значением "4" сначала обслуживается 2.</li>
19
<li>Для получения элемента со значением "4" сначала обслуживается 2.</li>
20
<li>В стеке поддерживается функция peek, которая позволяет обращаться к элементам по их индексам. В шаблоне enqueuer невозможно обратиться к определенной составляющей.</li>
20
<li>В стеке поддерживается функция peek, которая позволяет обращаться к элементам по их индексам. В шаблоне enqueuer невозможно обратиться к определенной составляющей.</li>
21
<li>Доступ ко всем элементам может быть реализован через массив.</li>
21
<li>Доступ ко всем элементам может быть реализован через массив.</li>
22
</ol><h2>Создание</h2>
22
</ol><h2>Создание</h2>
23
<p>Очередь в C требует предварительного подключения библиотеки <queue>. Далее происходит объявление самой структуры. Для этого разработчику требуется использовать такую форму представления:</p>
23
<p>Очередь в C требует предварительного подключения библиотеки <queue>. Далее происходит объявление самой структуры. Для этого разработчику требуется использовать такую форму представления:</p>
24
<p>Здесь:</p>
24
<p>Здесь:</p>
25
<ol><li>С начала пишется ключевое слово enqueue.</li>
25
<ol><li>С начала пишется ключевое слово enqueue.</li>
26
<li>Далее в <тип данных> указывает тип, которым будет заполнена пустая очередь.</li>
26
<li>Далее в <тип данных> указывает тип, которым будет заполнена пустая очередь.</li>
27
<li>В самом конце объявляется имя (название) структуры.</li>
27
<li>В самом конце объявляется имя (название) структуры.</li>
28
</ol><p>Пример: queue int t. Соответствующая запись указывает на создание очереди с целочисленными компонентами, которая называется t.</p>
28
</ol><p>Пример: queue int t. Соответствующая запись указывает на создание очереди с целочисленными компонентами, которая называется t.</p>
29
<h2>Методы</h2>
29
<h2>Методы</h2>
30
<p>Метод в C++ - это функция, которая работает с STL-контейнерами. Сюда можно отнести не только очереди, но и стеки.</p>
30
<p>Метод в C++ - это функция, которая работает с STL-контейнерами. Сюда можно отнести не только очереди, но и стеки.</p>
31
<p>Для работы с рассматриваемой информационной структурой требуется запомнить несколько функций:</p>
31
<p>Для работы с рассматриваемой информационной структурой требуется запомнить несколько функций:</p>
32
<ol><li>Push. Добавляет в структуру новый элемент. В круглых скобках указывается значение, которое вносится в queue.</li>
32
<ol><li>Push. Добавляет в структуру новый элемент. В круглых скобках указывается значение, которое вносится в queue.</li>
33
<li>Pop. С его помощью удаляем первый компонент в записи. В скобках ничего не указывается. Согласно действующим правилам C++, они все равно должны присутствовать в методе.</li>
33
<li>Pop. С его помощью удаляем первый компонент в записи. В скобках ничего не указывается. Согласно действующим правилам C++, они все равно должны присутствовать в методе.</li>
34
<li>Front. Используется для обращения к первому компоненту в информационной структуре.</li>
34
<li>Front. Используется для обращения к первому компоненту в информационной структуре.</li>
35
<li>Back. Требуется, чтобы обратиться к последней составляющей очереди.</li>
35
<li>Back. Требуется, чтобы обратиться к последней составляющей очереди.</li>
36
<li>Empty. Используется, чтобы определить, есть ли в рассматриваемой структуре то или иное количество элементов. Если queue пустая, результат вернется в виде true. В противном случае система выдаст false.</li>
36
<li>Empty. Используется, чтобы определить, есть ли в рассматриваемой структуре то или иное количество элементов. Если queue пустая, результат вернется в виде true. В противном случае система выдаст false.</li>
37
</ol><p>Вот - наглядный пример использования всех перечисленных методов:</p>
37
</ol><p>Вот - наглядный пример использования всех перечисленных методов:</p>
38
<p>Выше можно увидеть результат, который отобразится на экране после запуска предложенного фрагмента.</p>
38
<p>Выше можно увидеть результат, который отобразится на экране после запуска предложенного фрагмента.</p>
39
<h2>Создание через массивы</h2>
39
<h2>Создание через массивы</h2>
40
<p>Очереди в C ++ могут быть созданы при помощи массива. Обычно он называется queue. В C++ соответствующее слово является зарезервированным, поэтому далее будет использоваться имя q.</p>
40
<p>Очереди в C ++ могут быть созданы при помощи массива. Обычно он называется queue. В C++ соответствующее слово является зарезервированным, поэтому далее будет использоваться имя q.</p>
41
<p>Для реализации потребуется использовать две переменные:</p>
41
<p>Для реализации потребуется использовать две переменные:</p>
42
<ul><li>start - для указания первого компонента (int i) в очереди;</li>
42
<ul><li>start - для указания первого компонента (int i) в очереди;</li>
43
<li>ends - последняя составляющая структуры.</li>
43
<li>ends - последняя составляющая структуры.</li>
44
</ul><p>Для обращения к последнему компоненту предстоит использовать конструкций queue [ends], а к первому - queue [start].</p>
44
</ul><p>Для обращения к последнему компоненту предстоит использовать конструкций queue [ends], а к первому - queue [start].</p>
45
<p>Если необходимо стереть элемент из очереди, переменная start уменьшается на единицу. Для проверки на пустоту используется условие start == ends.</p>
45
<p>Если необходимо стереть элемент из очереди, переменная start уменьшается на единицу. Для проверки на пустоту используется условие start == ends.</p>
46
<p>Выше - пример реализации очереди через массив с использованием нескольких методов.</p>
46
<p>Выше - пример реализации очереди через массив с использованием нескольких методов.</p>
47
<h2>Приоритеты</h2>
47
<h2>Приоритеты</h2>
48
<p>В C++ поддерживаются очереди с приоритетом. В ней новый элемент будет добавляться так, чтобы очередь была отсортирована по убыванию. Самый большой компонент расположится в начале, маленький - в конце.</p>
48
<p>В C++ поддерживаются очереди с приоритетом. В ней новый элемент будет добавляться так, чтобы очередь была отсортирована по убыванию. Самый большой компонент расположится в начале, маленький - в конце.</p>
49
<p>Синтаксическая форма записи в данном случае окажется такой:</p>
49
<p>Синтаксическая форма записи в данном случае окажется такой:</p>
50
<p>Здесь сначала пишется ключевое слово, затем - тип используемых данных, а после - имя структуры. Для добавления элемента используется push. Чтобы обратиться к первому компоненту очереди используется top (как в случае со стеками).</p>
50
<p>Здесь сначала пишется ключевое слово, затем - тип используемых данных, а после - имя структуры. Для добавления элемента используется push. Чтобы обратиться к первому компоненту очереди используется top (как в случае со стеками).</p>
51
<p>Вот пример очереди с приоритетом:</p>
51
<p>Вот пример очереди с приоритетом:</p>
52
<p>Необходимо запомнить - функция back() для обращения к последнему компоненту информационной структуры не используется. То же самое касается front().<a></a></p>
52
<p>Необходимо запомнить - функция back() для обращения к последнему компоненту информационной структуры не используется. То же самое касается front().<a></a></p>
53
53