両端キューとは、先頭と最後尾の両方にデータを追加、削除可能なデータ構造です。
※「deque」は「デック」と読みます。
両端キューの特徴を書きます。
・添え字やイテレータで全要素にアクセス可能 ・push_back関数でデータを最後尾に追加 ・push_front関数でデータを先頭に追加 ・pop_back関数で最後尾のデータを削除 ・pop_front関数で先頭のデータを削除 ・front関数で先頭のデータを取得 ・back関数で最後尾のデータを取得 |
このデータ構造も色々使えると思うのですが、分かりやすい例があまり無いです・・・
とりあえず、使い方を書いておきます。
<sample program cpp020-01>
#include <iostream> #include <deque> int main() { std::deque<int> deqData; for (int i = 0; i < 3; i++) { deqData.push_back(i); deqData.push_front(5 + i); } //添え字によるアクセス for (unsigned int i = 0; i < deqData.size(); i++) { std::cout << deqData[i] << " "; } std::cout << std::endl; //先頭データへのアクセス std::cout << deqData.front() << std::endl; //最後尾データへのアクセス std::cout << deqData.back() << std::endl; //先頭データを削除 deqData.pop_front(); //最後尾データを削除 deqData.pop_back(); //イテレータによるアクセス std::deque<int>::iterator it; for (it = deqData.begin(); it != deqData.end(); it++) { std::cout << *it << " "; } std::cout << std::endl; return 0; } |
<実行結果>
7 6 5 0 1 2 7 2 6 5 0 1 続行するには何かキーを押してください・・・
まず、両端キューの後ろへ0,1,2、先頭へ5,6,7と格納しました。
添え字によるアクセス方法を使って、全データを表示しています。
次にfront関数を使って、先頭データを表示しました。
back関数を使って、最後尾のデータを表示しています。
pop_front関数で先頭データを削除、pop_back関数で最後尾データを削除し、
最後にイテレータを使って、全データを表示しました。
使える状況があれば使ってみてください。