★両端キュー(deque)★


両端キューとは、先頭と最後尾の両方にデータを追加、削除可能なデータ構造です。

※「deque」は「デック」と読みます。


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関数で最後尾データを削除し、

最後にイテレータを使って、全データを表示しました。


使える状況があれば使ってみてください。


次へ

戻る

目次へ