Внешний вид сайта:

Очередь: классы Queue и Queue

Полезность страницы:
0/100

Очередь (queue) — это коллекция, в которой элементы обрабатываются по схеме "первый вошел, первый вышел" (first in, first out — FIFO). Элемент, вставленный в очередь первым, первым же и читается. Примерами очередей могут служить очередь в аэропорту, очередь претендентов на трудоустройство, очередь печати принтера либо циклическая очередь потоков на выделение ресурсов процессора.

Часто встречаются очереди, в которых элементы обрабатываются по-разному, в соответствии с приоритетом. Например, в очереди в аэропорту пассажиры бизнес-класса обслуживаются перед пассажирами экономкласса. Здесь может использоваться несколько очередей — по одной для каждого приоритета. В аэропорту это можно видеть наглядно, поскольку там предусмотрены две стойки регистрации для пассажиров бизнес-класса и эконом-класса. То же справедливо и для очередей печати и диспетчера потоков. У вас может быть массив списка очередей, где элемент массива означает приоритет. Внутри каждого элемента массива будет очередь, и обработка будет выполняться по принципу FIFO.

 

Очередь (queue)

 

Очередь реализуется с помощью классов Queue из пространства имен System.Collections и Queue<T> из пространства имен System.Collections.Generic.

В классе Queue определяются приведенные ниже конструкторы:

public Queue()
public Queue (int capacity)
public Queue (int capacity, float growFactor)
public Queue (ICollection col)

В первой форме конструктора создается пустая очередь с выбираемыми по умолчанию емкостью и коэффициентом роста 2.0. Во второй форме создается пустая очередь, первоначальный размер которой определяет емкость, задаваемая параметром capacity, а коэффициент роста по умолчанию выбирается для нее равным 2.0. В третьей форме допускается указывать не только емкость (в качестве параметра capacity), но и коэффициент роста создаваемой очереди (в качестве параметра growFactor в пределах от 1.0 до 10.0). И в четвертой форме создается очередь, состоящая из элементов указываемой коллекции col. Ее первоначальная емкость равна количеству указанных элементов, а коэффициент роста по умолчанию выбирается для нее равным 2.0.

В классе Queue<T> определяются следующие конструкторы:

public Queue()
public Queue(int capacity)
public Queue(IEnumerable<T> collection)

В первой форме конструктора создается пустая очередь с выбираемой по умолчанию первоначальной емкостью, а во второй форме — пустая очередь, первоначальный размер которой определяет параметр capacity. И в третьей форме создается очередь, содержащая элементы коллекции, определяемой параметром collection. Ее первоначальная емкость равна количеству указанных элементов.

Члены класса Queue<T> представлены ниже:

Count - Свойство Count возвращает количество элементов в очереди.
Enqueue() - Метод Enqueue() добавляет элемент в конец очереди.
Dequeue() - Метод Dequeue() читает и удаляет элемент из головы очереди. Если на момент вызова метода Dequeue() элементов в очереди больше нет, генерируется исключение InvalidOperationException.
Peek() - Метод Peek() читает элемент из головы очереди, но не удаляет его.
TrimExcess() - Метод TrimExcess() изменяет емкость очереди. Метод Dequeue() удаляет элемент из очереди, но не изменяет ее емкости. TrimExcess() позволяет избавиться от пустых элементов в начале очереди.

Давайте рассмотрим пример очереди:

using System;
using System.Collections.Generic;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main()
        {
            Queue<int> qe = new Queue<int>();
            Random ran = new Random();

            for (int i = 0; i < 10; i++)
                qe.Enqueue(ran.Next(1, 10));

            Console.WriteLine("Очередь: \n");
            foreach (int i in qe)
                Console.Write(i);

            Console.ReadLine();
        }
    }
}
Пример очереди в C#
Дополнить страницу Вы можете помочь другим людям дополнив эту страницу вашими знаниями по данному вопросу!
20:44

Комментарии

Нет комментариев. Ваш будет первым!