C++の基礎: 配列の定義と使用方法を学ぶ

提供: Support
移動先: 案内検索

概要

配列は、整数、浮動小数点、文字、構造体など、さまざまなデータ型を持つデータブロックをメモリ上に定義するために使用されます。C&C ++プログラミング言語は、同じ型の要素を固定サイズで格納する配列というデータ構造が用意されています。配列は一般的にデータの集まりを格納するのに使われますが、同じ型の変数の集まりとしてデータを格納した方が便利な場合もあります。また、構造体(struct)の要素を用いることで、複数のデータ型の変数を配列に格納することもできます。


配列は、変数ごとにそれぞれを使用する代わりに、インデックス番号を持つ変数を使用するのに非常に適しています。 例えば、6番目の文字列name要素を、name0、name1、name2、name3、name4、name5の代わりに、name[5]として使うことができます。すべての配列は,連続したメモリ位置で構成され,インデックス番号は0から始まるので,負の数をインデックスとして使用することはできず,また,最大要素数を超えることはできません。最下位のメモリアドレスは最初の要素のインデックス番号に対応し,最上位のメモリアドレスは最後の要素のインデックス番号に対応します。


基本的には、以下のような一般的な形で説明することができます。

type array [ size ];

ここでは、いくつかの配列の例を紹介します。

int x[10];  // array with 10 integers, indexes are 0 to 10
 
float y[5];  // array 5 floating point numbers, indexes are 0 to 5
 
char  s[255]; // array 255 characters, this is ASCII format string, indexes are 0 to 255

配列の初期化

C & C++言語では、以下のようにして配列要素を初期化することができます。

int x[5];
int x[5]= { 0, 10, 20, 30, 40 };

以下のように、要素数のない配列を作ることができます。

int x[]= { 0, 10, 20, 30, 40 };

ASCII文字列もchar配列で、以下のように定義できます。

char s[]= "Hello";

配列の要素へのアクセス

任意の配列の要素にアクセスするには、その要素のインデックス番号を使用します。

int x[]= { 0, 10, 20, 30, 40 };
 
std::cout << x[0] << '\n';
std::cout << x[1] << '\n';
std::cout << x[2] << '\n';
std::cout << x[3] << '\n';
std::cout << x[4] << '\n';

配列にアクセスするには、for()、while()、do-while()ループを使用することができ、この例は以下のように簡単に書くことができます。

int x[]= { 0, 10, 20, 30, 40 };
 
for(int i=0; i<=4; i++)
{
   std::cout << x[i] << '\n';
}

char配列の各文字へのアクセスは以下の通りです。

char s[]= "Hello";
 
std::cout << s[0] << ',' << s[1] << ',' << s[2] << ',' << s[3] << ',' << s[4] << '\n';

多次元配列(2D、3D...配列)の初期化とアクセス

上記で紹介した配列の例は、すべて1次元配列でした.2次元,3次元,多次元の配列を初期化したりアクセスしたりすることができ,それらは行列形式とも呼ばれます.私たちは3次元の環境に住んでいますが、数学では3次元以上の次元を定義して計算することができます。

以下のコードは、整数値を持つ2次元の行列形式を初期化してアクセスする例です。

int m[5][5];
 
m[0][0] = 00;
m[1][1] = 11;
m[3][3] = 33;
 
cout << m[0][0] << '\n';
cout << m[1][1] << '\n';
cout << m[3][3] << '\n';

さらに以下のコードは、整数値の3次元行列形式を初期化してアクセスする例です。

int m[3][4][5];
 
m[0][0][0] = 000;
m[1][1][1] = 111;
m[2][2][2] = 222;
 
cout << m[0][0][0] << "\n";
cout << m[1][1][1] << "\n";
cout << m[2][2][2] << "\n";

通常、これらの値を読み書きするにはforループを使用します。例えば、2次元の配列の場合、iとjのインデックスに対して2つのループを使用する必要があります。以下のコードは、変数を設定し、それを表示する例です。

int m[10][10];
 
for( int j=0; j<10; j++) 
{
   for( int i=0; i<10; i++) 
   {
       m[j][i]=j*10+i;
   }
}
 
 
for( int j=0; j<10; j++) 
{
   for( int i=0; i<10; i++) 
   {
       std:: cout << m[j][i] <<",";
   }
   std:: cout << "\n"
}

関連情報