C++: 配列の要素数を動的に管理する方法

配列の基本

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はメモリの管理も自動で行ってくれるため、newdeleteを直接使うよりも安全で、使いやすいです。ただし、std::vectorの内部ではnewdeleteが使われているため、その動作原理を理解することは重要です。この記事では、そのための基礎知識を提供しました。これを基に、C++の配列をより深く理解し、効果的に利用してください。

投稿者 dodo

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です