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を使用した例です。
「>」が2つ続いていますが、「>」と「>」の間はスペースかタブもしくは改行を入れないと
エラーになりますので注意してください。続けてしまうと「>>」演算子と勘違いし、
コンパイルエラーになってしまう。
次のページでは実際に使ってみます。