まず読み方に困りそうですが「デック」と読みます。dequeは、vector(動的配列) とよく似ています。dequeの場合は、動的配列の前後に対して要素の挿入や削除が行えます。前にも後ろにも挿入動作が 行えるため、内部の実装がvectorより複雑になっていますが、使い方はほぼvectorと同じです。
基本的にvectorと同じように扱えるので、説明は簡単に済ませます。詳細はvectorを解説した第2章 を参照して下さい。
#include <deque> #include <iostream> using namespace std; // プロトタイプ宣言 void print(const deque<int>& deq); int main() { deque<int> deq; // int型の両端待ち行列 // 要素を追加 deq.push_back( 10 ); // 末尾に10 deq.push_back( 20 ); // 末尾に20 deq.push_front( 30 ); // 先頭に30 print( deq ); // 結果出力 // 要素を削除 deq.pop_back(); print( deq ); // 結果出力 // 全削除 deq.clear(); print( deq ); // 結果出力 return 0; } // dequeの要素を出力 void print(const deque<int>& deq) { if( deq.empty() ) { // dequeが空の場合 cout << "dequeは空です"; } else { // dequeが空ではない場合 for(int i = 0; i < (int)deq.size(); ++i ) { cout << deq[i] << ' '; } } cout << '\n' << endl; // 改行 } |
dequeはstdという名前空間に含まれています。dequeのデフォルトコンストラクタは、空の両端待ち行列を 生成します。デストラクタで適切に解体処理を行います。
要素を追加するには、push_back()、push_front()、 insert()のいずれかを使用します。また、要素を削除するには、 pop_back()、pop_front()、 erase()、clear()のいずれかを使用します。 この辺りは完全にvectorと同じです。例によって、insert()とerase()はイテレータを使います。clear()は要素 全てを削除します。
size()を使うとdequeに含まれている要素の個数が取得できます。空かどう かはempty()で判定します。
vectorと同じく、[]演算子を使って要素にアクセスできます。push_front()によって先頭に要素が追加できる ため、0番目の位置が変化する可能性があることに注意して下さい。