C++の配列とベクターの比較


  1. 定義と初期化: 配列は静的なデータ構造であり、固定サイズの要素を連続したメモリ領域に格納します。例えば、以下のように配列を定義し初期化します。
int myArray[5] = {1, 2, 3, 4, 5};

一方、ベクターは動的なデータ構造であり、可変サイズの要素を格納するために必要に応じてメモリを動的に割り当てます。以下はベクターの定義と初期化の例です。

#include <vector>
std::vector<int> myVector = {1, 2, 3, 4, 5};
  1. メモリ管理: 配列は静的なメモリ割り当てを使用するため、サイズが固定されています。一方、ベクターは動的なメモリ割り当てを行い、必要に応じてメモリを自動的に拡張または縮小します。ベクターは要素の追加や削除が容易であり、柔軟なデータ構造です。

  2. パフォーマンス: 配列は要素へのアクセスが高速であり、メモリの連続性によりキャッシュ効率が向上します。一方、ベクターは要素へのランダムアクセスが配列よりも遅くなる場合があります。しかし、ベクターは要素の追加や削除が高速であり、動的なサイズ変更が可能です。

  3. サイズの制限: 配列のサイズは宣言時に固定されるため、事前に最大サイズを知っている必要があります。一方、ベクターは必要に応じてサイズを変更できるため、動的なデータ管理に適しています。

  4. コード例: 以下は、配列とベクターの使用例です。

// 配列の使用例
int myArray[5] = {1, 2, 3, 4, 5};
for (int i = 0; i < 5; i++) {
    std::cout << myArray[i] << " ";
}
// ベクターの使用例
#include <vector>
std::vector<int> myVector = {1, 2, 3, 4, 5};
for (int i = 0; i < myVector.size(); i++) {
    std::cout << myVector[i] << " ";
}