197 lines
6.6 KiB
Markdown
197 lines
6.6 KiB
Markdown
|
---
|
|||
|
title: queue
|
|||
|
localeTitle: очередь
|
|||
|
---
|
|||
|
## Очереди
|
|||
|
|
|||
|
`queue` является одним из наиболее используемых контейнеров в C ++. Контейнер представляет собой структуру данных, которая хранит коллекцию объектов, некоторые по порядку, некоторые - нет. Все контейнеры имеют другой набор функций, которые позволяют вам получить доступ к объекту (объектам) в этой коллекции.
|
|||
|
|
|||
|
`std::queue` является частью стандартной библиотеки C ++ (отсюда и префикс `std::` и позволяет хранить данные в порядке First In First Out (FIFO). ПРИМЕЧАНИЕ. **Все объекты в очереди должны иметь один и тот же тип данных**
|
|||
|
|
|||
|
Тип данных, который вы храните в очереди, находится в угловых скобках рядом с ключевым словом очереди. Например, если вы хотите сохранить коллекцию целых чисел, то очередь будет `std::queue<int> queue_name`
|
|||
|
|
|||
|
### Очередь LIFO Пояснение
|
|||
|
|
|||
|
`queue` позволяет нам нажимать / вставлять в очередь и поп / деактивировать в определенном порядке. **Push** означает вставку объекта в начале очереди. **Pop** означает вытащить «самый старый» объект из конца очереди. Поэтому, когда вы нажимаете его на передний план, и когда вы поп, вы извлекаете самый старый элемент.
|
|||
|
|
|||
|
![alt text](https://github.com/mohammadaziz313/helloworld/blob/master/Fifo_queue.png "Пример очереди очереди FIFO и Dequeue")
|
|||
|
|
|||
|
### Операции в очереди
|
|||
|
|
|||
|
Контейнер очереди поддерживает следующие операции:
|
|||
|
|
|||
|
* push (enqueue)
|
|||
|
* pop (dequeue)
|
|||
|
* пустой
|
|||
|
* размер
|
|||
|
* фронт
|
|||
|
* назад
|
|||
|
|
|||
|
#### От себя
|
|||
|
|
|||
|
Позволяет вставлять новый элемент в конце очереди после последнего текущего элемента.
|
|||
|
|
|||
|
```cpp
|
|||
|
//Push operation in Queue
|
|||
|
#include <iostream> // std::cout
|
|||
|
#include <queue> // std::queue
|
|||
|
|
|||
|
int main ()
|
|||
|
{
|
|||
|
std::queue<int> q;
|
|||
|
|
|||
|
q.push(1); //Pushing 1 at front of the queue
|
|||
|
q.push(2); //Pushing 2 at front of the queue
|
|||
|
|
|||
|
return 0;
|
|||
|
}
|
|||
|
```
|
|||
|
|
|||
|
#### Фронт
|
|||
|
|
|||
|
Позволяет получить доступ к следующему элементу в очереди, не удаляя его. Следующий элемент - это «самый старый» элемент в очереди.
|
|||
|
|
|||
|
```cpp
|
|||
|
//Front operation in Queue
|
|||
|
#include <iostream> // std::cout
|
|||
|
#include <queue> // std::queue
|
|||
|
|
|||
|
int main ()
|
|||
|
{
|
|||
|
std::queue<int> q;
|
|||
|
|
|||
|
q.push(1); //Pushing 1 at front of the queue
|
|||
|
q.push(2); //Pushing 2 at front of the queue
|
|||
|
|
|||
|
std::cout<<q.front()<<'\n'; //Accessing the front of the queue
|
|||
|
std::cout<<q.front()<<'\n'; //Accessing the front of the queue
|
|||
|
|
|||
|
return 0;
|
|||
|
}
|
|||
|
```
|
|||
|
|
|||
|
```
|
|||
|
Output:
|
|||
|
1
|
|||
|
1
|
|||
|
```
|
|||
|
|
|||
|
#### поп
|
|||
|
|
|||
|
Позволяет удалить следующий элемент в очереди, эффективно уменьшая его размер на единицу. Удаленный элемент является «самым старым» элементом.
|
|||
|
|
|||
|
```cpp
|
|||
|
//Pop operation in Queue
|
|||
|
#include <iostream> // std::cout
|
|||
|
#include <queue> // std::queue
|
|||
|
|
|||
|
int main ()
|
|||
|
{
|
|||
|
std::queue<int> q;
|
|||
|
|
|||
|
q.push(1); //Pushing 1 at front of the queue
|
|||
|
q.push(2); //Pushing 2 at front of the queue
|
|||
|
|
|||
|
std::cout<<q.front()<<'\n'; //Accessing the front of the queue
|
|||
|
q.pop(); //Removing the oldest element
|
|||
|
std::cout<<q.front()<<'\n'; //Accessing the front of the queue
|
|||
|
q.pop(); //Removing the oldest element
|
|||
|
|
|||
|
return 0;
|
|||
|
}
|
|||
|
```
|
|||
|
|
|||
|
```
|
|||
|
Output:
|
|||
|
1
|
|||
|
2
|
|||
|
```
|
|||
|
|
|||
|
#### Размер
|
|||
|
|
|||
|
Возвращает количество элементов в `queue` .
|
|||
|
|
|||
|
```cpp
|
|||
|
//Size operation in Queue
|
|||
|
#include <iostream> // std::cout
|
|||
|
#include <queue> // std::queue
|
|||
|
|
|||
|
int main ()
|
|||
|
{
|
|||
|
std::queue<int> q;
|
|||
|
|
|||
|
q.push(1); //Pushing 1 at front of the queue
|
|||
|
q.push(2); //Pushing 2 at front of the queue
|
|||
|
|
|||
|
std::cout<<q.size()<<'\n'; //Accessing the front of the queue
|
|||
|
q.pop(); //Removing the oldest element
|
|||
|
std::cout<<q.size()<<'\n'; //Accessing the front of the queue
|
|||
|
q.pop(); //Removing the oldest element
|
|||
|
std::cout<<q.size()<<'\n'; //Accessing the front of the queue
|
|||
|
|
|||
|
return 0;
|
|||
|
}
|
|||
|
```
|
|||
|
|
|||
|
```
|
|||
|
Output:
|
|||
|
2
|
|||
|
1
|
|||
|
0
|
|||
|
```
|
|||
|
|
|||
|
#### пустой
|
|||
|
|
|||
|
Возвращает, является ли `queue` пустой, т. Е. Будет ли ваш размер очереди равен нулю. Он возвращает `true` если размер очереди 0 else возвращает `false`
|
|||
|
|
|||
|
\`\` \`cpp // Пустая операция в очереди
|
|||
|
|
|||
|
# включают // std :: cout
|
|||
|
|
|||
|
# включают // std :: stack
|
|||
|
|
|||
|
int main () { станд :: очереди д;
|
|||
|
|
|||
|
q.push (1); q.push (2);
|
|||
|
|
|||
|
while (q.empty ()! = true) { станд :: соиЬ << q.front () << '\\ п'; q.pop (); }
|
|||
|
|
|||
|
std :: cout << "Вне цикла" << '\\ n'; return 0; }
|
|||
|
```
|
|||
|
Output:
|
|||
|
1
|
|||
|
2
|
|||
|
Out of loop
|
|||
|
|
|||
|
#### Back
|
|||
|
|
|||
|
Allows you to access the last element in the queue without removing it.
|
|||
|
The next element is the "newest" element in the queue.
|
|||
|
```
|
|||
|
|
|||
|
CPP // Назад в очереди
|
|||
|
|
|||
|
# включают // std :: cout
|
|||
|
|
|||
|
# включают // std :: queue
|
|||
|
|
|||
|
int main () { станд :: очереди д;
|
|||
|
|
|||
|
q.push (1); // Нажатие 1 перед очередью q.push (2); // Нажатие 2 перед очередью
|
|||
|
|
|||
|
станд :: соиЬ << q.back () << '\\ п'; // Доступ к задней части очереди станд :: соиЬ << q.back () << '\\ п'; // Доступ к задней части очереди
|
|||
|
|
|||
|
return 0; } \`\` \`
|
|||
|
```
|
|||
|
Output:
|
|||
|
2
|
|||
|
2
|
|||
|
```
|
|||
|
|
|||
|
### Дополнительные ресурсы:
|
|||
|
|
|||
|
http://www.cplusplus.com/reference/queue/queue/
|
|||
|
|
|||
|
### Цитирование:
|
|||
|
|
|||
|
Предоставлено: https://en.wikipedia.org/wiki/FIFO _(вычислительная и_ электронная электроника)
|