STL講座
deque

dequeテンプレートの仕様

template <class T, class Allocator =allocator<T> > class deque

dequeのコンストラクタ

@ explicit deque (const Allocator &a = Allocator());
A explicit deque (size_type num, const T &val = T)), const Allocator&a = Allocator());
B deque (const deque<T, Allocator> &ob);
C template <class InIter> deque (InIter start, InIter end, const Allocator &a = Allocator());

@空のキューが作成されます。
 explicit deque (const Allocator &a = Allocator());

#include <iostream>
#include <deque>
using namespace std;

int main()
{
        deque<char *> dchar;   // こんな使い方ありかな? 空のキュー
        cout << "dcharのサイズ: " << dchar.size() << "\n\n";
        return 0;
}

実行結果

dcharのサイズ: 0

A値valの要素で構成されたnum個のキューが作成されます。
 explicit deque (size_type num, const T &val = T)), const Allocator&a = Allocator());

#include <iostream>
#include <deque>
using namespace std;

int main()
{
        deque<char *> dchar(10, "aaa");   // 文字列aaaという10個の要素で構成されるキュー
        cout << "dcharのサイズ: " << dchar.size() << "\n";
        for(int i=0; i<dchar.size() ; i++) cout << dchar[i] << "  ";
        cout << endl;

        return 0;
}

Bコピーコンストラクタ
 deque (const deque<T, Allocator> &ob);

#include <iostream>
#include <deque>
using namespace std;

void Func(deque<char> &ob)
{
        int i;
        for(i=0; i<ob.size() ; i++) cout << ob[i] << "  ";
        cout << "\n前方の要素を3個削除\n";
        for(i=0; i<3; i++) ob.pop_front();
}

int main()
{
        deque<char> dchar;
        int i;
        for(i=0; i<10; i++) dchar.push_back('a'+i);
        Func(dchar);
        for(i=0; i<dchar.size() ; i++) cout << dchar[i] << "  ";
        return 0;
}

実行結果

a b c d e f g h i j
d e f g h i j