●C++編(標準ライブラリ) 第4章 deque

○dequeとは

まず読み方に困りそうですが「デック」と読みます。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番目の位置が変化する可能性があることに注意して下さい。


C++編(標準ライブラリ)のトップページに戻る

サイトのトップページに戻る

1