C ++の配列とベクトルの違いは何ですか?違いの例としては、ライブラリ、シンボリズム、能力などがあります。
配列
配列には、特定のタイプの特定の数の要素が含まれています。プログラムのコンパイル時にコンパイラーが必要なスペースを予約できるようにするには、配列が定義されたときに配列に含まれる要素のタイプと数を指定する必要があります。コンパイラーは、プログラムのコンパイル時にこの値を判別できる必要があります。配列を定義したら、配列の識別子とインデックスを使用して、配列の特定の要素にアクセスします。[...]配列はゼロインデックスです。つまり、最初の要素はインデックス0にあります。このインデックススキームは、C ++でのポインタと配列の密接な関係と、言語がポインタ演算用に定義するルールを示しています。
—C++ポケットリファレンス
ベクター
ベクトルは、動的にサイズ設定されたオブジェクトのシーケンスであり、配列スタイルの
operator[]
ランダムアクセスを提供します。メンバー関数push_back
は、コピーコンストラクターを介して引数をコピーし、そのコピーをベクトルの最後の項目として追加し、サイズを1つ増やします。pop_back
最後の要素を削除することにより、正反対のことを行います。ベクトルの末尾からのアイテムの挿入または削除には一定の時間がかかり、他の場所からの挿入または削除には線形時間がかかります。これらはベクトルの基本です。彼らにはもっとたくさんのことがあります。ほとんどの場合、Cスタイルの配列よりもベクトルを最初に選択する必要があります。まず、動的にサイズ設定されます。つまり、必要に応じて拡張できます。C配列の場合のように、最適な静的サイズを見つけるためにあらゆる種類の調査を行う必要はありません。ベクトルは必要に応じて大きくなり、必要に応じて手動でサイズを大きくしたり小さくしたりできます。次に、ベクトルはat
メンバー関数を使用した境界チェックを提供します(ただし、operator[]
)。これにより、プログラムのクラッシュやさらに悪い状況を監視するのではなく、存在しないインデックスを参照して、破損したデータで実行を継続した場合に、何かを実行できます。—C++クックブック