`Queue<T>` в C# является обобщённой коллекцией (generic collection), представляющей собой структуру данных типа "очередь". Очередь работает по принципу "первым пришёл — первым ушёл" (FIFO — First In, First Out). Это значит, что элементы извлекаются из коллекции в том порядке, в котором они были добавлены. ### Основные операции с `Queue<T>`: 1. **Enqueue(T item)** - добавляет элемент в конец очереди. 2. **T Dequeue()** - удаляет и возвращает элемент из начала очереди. Если очередь пуста, происходит исключение `InvalidOperationException`. 3. **T Peek()** - просто возвращает элемент из начала очереди без его удаления. Если очередь пуста, также происходит исключение `InvalidOperationException`. 4. **Clear()** - удаляет все элементы из очереди. 5. **Contains(T item)** - проверяет, содержится ли элемент в очереди, и возвращает `true`, если содержится, иначе `false`. 6. **ToArray()** - преобразует очередь в массив. ### Пример использования: ```csharp using System; using System.Collections.Generic; class Program { static void Main() { // Создание очереди целых чисел Queue<int> queue = new Queue<int>(); // Добавление элементов в очередь queue.Enqueue(1); queue.Enqueue(2); queue.Enqueue(3); // Вывод первого элемента без его удаления Console.WriteLine(quot;Первый в очереди: {queue.Peek()}"); // Удаление и возвращение элементов из очереди while (queue.Count > 0) { Console.WriteLine(queue.Dequeue()); } } } ``` ### Производительность: - **Добавление элемента (Enqueue)**: O(1) - добавление в конец очереди выполняется за постоянное время. - **Удаление элемента (Dequeue)**: O(1) - удаление из начала очереди также выполняется за постоянное время. - **Поиск элемента (Contains)**: O(n) - требует просмотра всех элементов, поэтому время выполнения линейно зависит от количества элементов в очереди. `Queue<T>` реализована с использованием динамического кольцевого буфера, что обеспечивает высокую эффективность основных операций очереди. Важно понимать, что при расширении внутреннего массива (когда текущая вместимость не может вместить новые элементы) происходит выделение нового массива и копирование элементов, что может привести к временному снижению производительности.