## 5.1 vector データの抽象化

vector コンテナクラスは、通常の C 配列の概念を汎用化します。配列と同様に、vector はインデックス付きのデータ構造で、インデックス値の範囲は、0 から構造に包含される要素の数より 1 少ない数までとなります。また、配列と同様に、値は最も一般的に `subscript` 演算子を使用して vector に代入されたり、抽出されたりします。ただし、vector は以下の最も重要な点で配列とは異なります。

- vector には、通常の配列以上の自己認識能力があります。特に、vector では vector 自体のサイズ、潜在的に保持している要素の数について照会することができます。これらは現在のサイズなどとは異なる可能性があります。

- vector のサイズは動的に変更することができます。新しい要素を vector の末尾または中間に挿入することができます。記憶管理は自動的に効率よく処理されます。ただし、このような機能は提供されてはいますが、vector の中間への挿入は list の中間への挿入 (第 6 章) ほど効率的ではないことに注意してください。多数の挿入演算を実行する場合は、vector データ型の代わりに list コンテナを使用してください。

標準 C++ ライブラリの vector コンテナクラスは、第 7 章で説明する deque コンテナクラスと比較し、対比させる必要があります。vector と同様に、deque (deck が顕著です) もインデックス付きのデータ構造です。この 2 つの最大の相違は、deque はコンテナの先頭または末尾のどちらへでも効率よく挿入できるのに対し、vector で効率よく挿入できるのは末尾のみである点です。多くの場合、どちらかの構造を使用することができます。通常、実行されている演算に応じて、vector を使用すると、より小さな実行可能ファイルが作成されます。一方、deque を使用すると、わずかに実行時間が短いプログラムが作成されます。

### 5.1.1 インクルードファイル

vector を使用する場合は、必ず vector ヘッダーファイルをインクルードする必要があります。

    # include <vector>

Copyright (c) 1998, Rogue Wave Software, Inc.
このマニュアルに関する誤りのご指摘やご質問は、電子メールにてお送りください。
OEM リリース, 1998 年 6 月