両端キューとは、先頭と最後尾の両方にデータを追加、削除可能なデータ構造です。
※「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関数で最後尾データを削除し、
最後にイテレータを使って、全データを表示しました。
使える状況があれば使ってみてください。