C#のQueue(キュー)クラスとは?FIFOの基本とEnqueue・Dequeueの使い方
C#のキュー(Queue)とは
キュー(Queue)は、オブジェクトを「先入れ先出し(FIFO:First-In, First-Out)」で管理するコレクションです。最初に追加した要素が最初に取り出されるという特性を持つため、タスクの順番待ちや処理の履歴管理など、追加された順序どおりに要素へアクセスしたい場面で活用されます。
要素をキューに追加することを「エンキュー(Enqueue)」、キューから要素を取り出すことを「デキュー(Dequeue)」と呼びます。
要素の追加:Enqueueメソッド
キューに要素を追加するには、Enqueueメソッドを使用します。
Queue q = new Queue();
q.Enqueue('X');
q.Enqueue('Y');
q.Enqueue('Z');
要素の削除:Dequeueメソッド
キューから要素を取り出して削除するには、Dequeueメソッドを使用します。以下は、キューが空になるまでループで全要素を順番に取り出す例です。
// 要素を削除
while (q.Count > 0)
Console.WriteLine(q.Dequeue());
サンプルプログラム
ここでは、キューに複数の文字を追加し、その内容を表示する完全なサンプルコードを紹介します。
using System;
using System.Collections;
namespace Demo {
class Program {
static void Main(string[] args) {
Queue q = new Queue();
q.Enqueue('t');
q.Enqueue('u');
q.Enqueue('v');
q.Enqueue('w');
q.Enqueue('x');
Console.WriteLine("Current queue: ");
foreach (char c in q) Console.Write(c + " ");
Console.WriteLine();
Console.ReadKey();
}
}
}
実行結果
Current queue:
t u v w x
追加した順番(t → u → v → w → x)どおりに要素が出力されていることがわかります。これがキューのFIFO(先入れ先出し)の動作です。
キューで使えるその他の主なメンバー
Queueクラスには、Enqueue/Dequeue以外にも便利なメソッドやプロパティが用意されています。
- Peek():先頭の要素を削除せずに参照する
- Contains(object):指定した要素がキューに含まれているかどうかを確認する
- Clear():キューからすべての要素を削除する
- Count:キュー内の現在の要素数を取得するプロパティ
ジェネリック版のQueue<T>もおすすめ
System.Collections名前空間の非ジェネリックなQueueクラス以外に、型安全なQueue<T>(System.Collections.Generic名前空間)も用意されています。Queue<T>はボックス化・ボックス化解除のオーバーヘッドがなく、パフォーマンス面でも有利なため、実際の開発ではこちらの使用が推奨されます。
-
C#のインターフェイスとは?宣言方法と実装例をわかりやすく解説
インターフェイスとは インターフェイスは、プロパティ、メソッド、イベントなどのメンバーを定義するための仕組みです。インターフェイスにはメンバーの「宣言」のみが含まれており、実際の処理内容(実装)は、そのインターフェイスを実装するクラス側で定義する必要があります。 この仕組みにより、インターフェイスは派生クラスが従うべき標準的な構造(いわば「契約」)を提供します。複数のクラスに対して共通のメンバーを持つことを強制できるため、コードの一貫性や保守性の向上に役立ちます。 インターフェイスの宣言方法 C#では、interfaceキーワードを使用してインターフェイスを宣言します。命名規則として、インタ
-
Pythonでキュー(Queue)を実装するプログラムの書き方
Pythonでキュー(Queue)を実装するには、専用のクラスを作成し、要素を追加・削除するためのメソッドを定義します。その後、クラスのインスタンスを生成し、メソッドを呼び出すことで各種操作を行い、結果をコンソールに表示します。キューは「先入れ先出し(FIFO:First In First Out)」と呼ばれるデータ構造で、最初に追加した要素が最初に取り出されるという特徴があります。タスク管理やバッファ処理など、さまざまな場面で活用される基本的な構造です。以下に、Pythonでのキューの実装例を示します。サンプルコードclass Queue_struct: &