トップ-> C++入門:7章 STL-> queue

←前ページへ :  トップへ :  次ページへ→

9. queue


  queueはすでに説明したように、コンテナの最後にデータを追加し、コンテナの最初から 取得する構造です。

パフォーマンス(標準のqueueの場合)
作業内容 処理速度
要素の追加 定数時間(要素数によらない)
要素の削除 定数時間(要素数によらない)
ランダムアクセス 不可能

queueクラスの主要な関数
関数名 書 式 説 明
empty bool empty() const queueの要素が0なら「true」を、カラでなければ「false」を返します
size size_type size() 要素数を返します
push void push( const T &value ) queueの末尾にデータを追加します
pop void pop() queueの先頭の要素を削除します
front reference front() queueの先端の要素を返します
back reference back() queueの末端の要素を返します

コンストラクタ
書 式 説 明
queue(const A& al = A())
例) queue<int> q();

queueを作成しqとする

  queueコンテナは、FIFOのキューとしてのアクセスしかできません。イタレーターも しようできないため、ごく限られた方法(front関数, back関数)でしか、データにアクセスすることができません。

  STLのくせに、なぜイタレーターすら使用できないのでしょう? queueやpriority_queueの 中身は実はdequeコンテナなのです。dequeコンテナを使用して 目的にあわせたコンテナを作成しています。つまりdequeの機能の一部を提供している 特別なコンテナです。つまりイタレーターをサポートすると目的とするコンテナ以外の 操作が可能になってしまうため、イタレーターすら利用できないようにしているのです。 このようなコンテナを「アダプタ」と呼びます。

  queueの中身は実はdequeであることは上述の通りです。一般にqueueを利用する 場合は、dequeを利用するのが効率的なのですが、deque以外のコンテナを利用して queueを作成することもできます。下の例は、queueの中身としてlistを使用した例です。
queue< int, list<int> >

  「>」が2つ続いていますが、「>」と「>」の間はスペースかタブもしくは改行を入れないと エラーになりますので注意してください。続けてしまうと「>>」演算子と勘違いし、 コンパイルエラーになってしまう。

  次のページでは実際に使ってみます。


←前ページへ :  トップへ :  次ページへ→