配列の基本
C++では、配列は同じ型の複数の要素を連続的に格納するためのデータ構造です。配列は以下のように宣言します:
型名 配列名[要素数];
例えば、int
型の要素を10個格納する配列は次のように宣言します:
int array[10];
この配列array
は、array[0]
からarray[9]
までの10個のint
型の要素を持ちます。配列のインデックスは0から始まることに注意してください。
配列の要素に値を代入するには、以下のようにします:
array[0] = 1;
array[1] = 2;
// ...
array[9] = 10;
これで、配列array
の各要素に1から10までの値が順に格納されます。配列の要素を参照するには、配列名[インデックス]
の形式を使用します。例えば、array[0]
は配列array
の最初の要素を参照します。
以上が、C++における配列の基本的な使い方です。次に、配列の要素数を動的に変更する方法について説明します。
配列の要素数を動的に変更する方法
C++の基本的な配列は、宣言時に要素数を固定する必要があります。しかし、プログラムの実行中に配列の要素数を動的に変更する必要がある場合もあります。そのような場合には、動的メモリ確保を利用します。
new演算子による動的確保
C++では、new
演算子を使用して動的にメモリを確保することができます。以下に、new
演算子を使用して配列を動的に確保する例を示します:
int* array = new int[10];
このコードは、int
型の要素を10個格納する配列を動的に確保します。new
演算子は、確保したメモリの先頭アドレスを返すため、ポインタ変数に格納します。
動的に確保したメモリは、使用後に必ず解放する必要があります。メモリの解放にはdelete[]
演算子を使用します:
delete[] array;
std::vectorを用いた動的配列
C++の標準ライブラリには、std::vector
という動的配列を扱うためのクラスがあります。std::vector
を使用すると、配列の要素数を動的に変更することが容易になります。
#include <vector>
std::vector<int> array;
このコードは、int
型の動的配列array
を宣言します。std::vector
は、要素の追加や削除を行うメソッドを提供しています。例えば、push_back
メソッドを使用して要素を追加することができます:
array.push_back(1);
array.push_back(2);
// ...
array.push_back(10);
以上が、C++における配列の要素数を動的に変更する方法です。次に、new
演算子による動的確保について詳しく説明します。
new演算子による動的確保
C++では、new
演算子を使用して動的にメモリを確保することができます。new
演算子は、指定した型のオブジェクトを動的に生成し、そのオブジェクトのアドレスを返します。
例えば、int
型の要素を10個格納する配列を動的に確保するには、以下のようにします:
int* array = new int[10];
このコードは、int
型の要素を10個格納する配列を動的に確保し、その先頭アドレスをarray
という名前のポインタに格納します。この配列の要素数は、宣言時ではなく実行時に決定されます。
動的に確保したメモリは、使用後に必ず解放する必要があります。メモリの解放にはdelete[]
演算子を使用します:
delete[] array;
このコードは、array
が指すメモリ領域を解放します。delete[]
演算子を使用すると、動的に確保したメモリ領域全体が解放されます。
以上が、C++におけるnew
演算子による動的確保の基本的な使い方です。次に、std::vector
を用いた動的配列について詳しく説明します。
std::vectorを用いた動的配列
C++の標準ライブラリには、std::vector
という動的配列を扱うためのクラスがあります。std::vector
は、配列の要素数を動的に変更することが容易になります。
std::vector
を使用するには、まずvector
を含むヘッダファイルをインクルードします:
#include <vector>
次に、std::vector
のインスタンスを作成します。以下のコードは、int
型の動的配列を作成します:
std::vector<int> array;
このarray
は、要素数を動的に変更することが可能な配列です。初期状態では要素数は0です。
std::vector
に要素を追加するには、push_back
メソッドを使用します:
array.push_back(1);
array.push_back(2);
// ...
array.push_back(10);
このコードは、array
に1から10までの値を順に追加します。push_back
メソッドを呼び出すたびに、array
の要素数が1つ増えます。
std::vector
の要素数を取得するには、size
メソッドを使用します:
std::cout << "The size of the array is " << array.size() << std::endl;
このコードは、array
の要素数を出力します。
以上が、C++のstd::vector
を用いた動的配列の基本的な使い方です。これにより、配列の要素数をプログラムの実行中に動的に変更することが可能になります。これは、配列の要素数が事前に決まっていない場合や、要素数が変わる可能性がある場合に非常に便利です。また、std::vector
はメモリの管理も自動で行ってくれるため、new
やdelete
を直接使うよりも安全で、使いやすいです。ただし、std::vector
の内部ではnew
やdelete
が使われているため、その動作原理を理解することは重要です。この記事では、そのための基礎知識を提供しました。これを基に、C++の配列をより深く理解し、効果的に利用してください。