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