HTML Diff
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 требует предварительного подключения библиотеки &lt;queue&gt;. Далее происходит объявление самой структуры. Для этого разработчику требуется использовать такую форму представления:</p>
23 <p>Очередь в C требует предварительного подключения библиотеки &lt;queue&gt;. Далее происходит объявление самой структуры. Для этого разработчику требуется использовать такую форму представления:</p>
24 <p>Здесь:</p>
24 <p>Здесь:</p>
25 <ol><li>С начала пишется ключевое слово enqueue.</li>
25 <ol><li>С начала пишется ключевое слово enqueue.</li>
26 <li>Далее в &lt;тип данных&gt; указывает тип, которым будет заполнена пустая очередь.</li>
26 <li>Далее в &lt;тип данных&gt; указывает тип, которым будет заполнена пустая очередь.</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