キューの定義がそのようなインターフェースをサポートしていないためです。キューは先入れ先出しを意味する FIFO データ構造です。Queue は、エンキューおよびデキュー 操作をサポートします。
キューをパイプとして想像してみてください。一方の端にデータを挿入し、もう一方の端からデータを 1 つずつ取り出します。データを挿入することをエンキュー、取り出すことをデキューと呼びます。C++ 標準ライブラリにstd::queue
は、これらの両方の操作が定義されています。 はエンキュー操作の名前でありpush()
、デキュー操作は 2 つのステップに分割されています。デキューが 2 つのステップに分割された理由は、強力な例外保証1を与えるためです。front()
pop()
ウィキペディアはこれを簡単に説明します、
キューは、コレクション内のエンティティが順番に保持される特定の種類のコレクションであり、コレクションに対する主要な (または唯一の) 操作は、後端位置へのエンティティの追加と、前端位置からのエンティティの削除です。これにより、キューは先入れ先出し (FIFO) データ構造になります。FIFO データ構造では、キューに最初に追加された要素が最初に削除されます。これは、要素が追加されると、新しい要素を呼び出す前に、以前に追加されたすべての要素を削除する必要があるという要件に相当します。キューは線形データ構造の一例です。
1. 強力な例外保証がどの程度正確に提供されるかを知りたい場合は、別のトピックを開始できます。これは非常に長い話であり、適切に理解するには多くの忍耐が必要なためです。これについては、Herb Sutter による Exceptional C++ を読むことをお勧めします。