C++ 配列
C++ 配列
このチュートリアルでは、配列の操作を学びます。例を使用して、C++ プログラミングで配列要素を宣言、初期化、およびアクセスする方法を学習します。
C++ では、配列は同じ型の複数の値を格納できる変数です。たとえば、
クラスに 27 人の生徒がいて、全員の成績を保存する必要があるとします。 27 個の個別の変数を作成する代わりに、単純に配列を作成できます:
double grade[27];
ここで、評定 double
の要素を最大 27 個保持できる配列です タイプしてください。
C++ では、宣言後に配列のサイズと型を変更することはできません。
C++ 配列宣言
dataType arrayName[arraySize];
たとえば、
int x[6];
ここで、
int
- 保存する要素のタイプ- x - 配列の名前
6
- 配列のサイズ
C++ 配列の要素にアクセス
C++ では、配列の各要素は数値に関連付けられています。この数値は配列インデックスと呼ばれます。これらのインデックスを使用して、配列の要素にアクセスできます。
// syntax to access array elements
array[index];
配列 x を検討してください
<図>覚えておくべきこと:
- 配列インデックスは
0
で始まります .意味 x[0] インデックス0
に格納されている最初の要素です . - 配列のサイズが
n
の場合 、最後の要素はインデックス(n-1)
に格納されます .この例では、x[5] は最後の要素です。 - 配列の要素には連続したアドレスがあります。たとえば、開始アドレスが
x[0]
であるとします。 2120dです。次に、次の要素のアドレスx[1]
x[2]
のアドレスである 2124d になります 2128d などになります。
ここでは、各要素のサイズを 4 ずつ増やしています。これは、int
のサイズが は 4 バイトです。
C++ 配列の初期化
C++ では、宣言中に配列を初期化することができます。たとえば、
// declare and initialize and array
int x[6] = {19, 10, 8, 17, 9, 15};
<図> 宣言中に配列を初期化する別の方法:
// declare and initialize an array
int x[] = {19, 10, 8, 17, 9, 15};
ここでは、配列のサイズについて言及していません。このような場合、コンパイラは自動的にサイズを計算します。
空のメンバーを持つ C++ 配列
C++ では、配列のサイズが n
の場合 、最大 n まで保存できます 配列内の要素数。ただし、n 未満を格納するとどうなるでしょうか 要素数。
たとえば、
// store only 3 elements in the array
int x[6] = {19, 10, 8};
ここで、配列 x サイズは 6
です .ただし、3 つの要素のみで初期化しました。
このような場合、コンパイラはランダムな値を残りの場所に割り当てます。多くの場合、このランダムな値は単に 0
です .
配列要素を挿入して出力する方法
int mark[5] = {19, 10, 8, 17, 9}
// change 4th element to 9
mark[3] = 9;
// take input from the user
// store the value at third position
cin >> mark[2];
// take input from the user
// insert at ith position
cin >> mark[i-1];
// print first element of the array
cout << mark[0];
// print ith element of the array
cout >> mark[i-1];
例 1:配列要素の表示
#include <iostream>
using namespace std;
int main() {
int numbers[5] = {7, 5, 6, 12, 35};
cout << "The numbers are: ";
// Printing array elements
// using range based for loop
for (const int &n : numbers) {
cout << n << " ";
}
cout << "\nThe numbers are: ";
// Printing array elements
// using traditional for loop
for (int i = 0; i < 5; ++i) {
cout << numbers[i] << " ";
}
return 0;
}
出力
The numbers are: 7 5 6 12 35 The numbers are: 7 5 6 12 35
ここでは、for
を使用しています。 i = 0
から反復するループ i = 4
まで .各繰り返しで、 numbers[i]
を出力しました .
再び範囲ベースの for ループを使用して、配列の要素を出力しました。このループの詳細については、C++ Ranged for Loop を確認してください。
注: 範囲ベースのループでは、コード const int &n
を使用しました int n
の代わりに 範囲宣言として。ただし、const int &n
次の理由でより好ましい:
int n
の使用 配列要素を変数 n にコピーするだけです 各反復中。これはメモリ効率が良くありません。 &n ただし、配列要素のメモリ アドレスを使用して、新しい変数にコピーせずにデータにアクセスします。これはメモリ効率が良いです。
const
を使用します。 配列の値を誤って変更しないようにします。例 2:ユーザーから入力を受け取り、それらを配列に格納する
#include <iostream>
using namespace std;
int main() {
int numbers[5];
cout << "Enter 5 numbers: " << endl;
// store input from user to array
for (int i = 0; i < 5; ++i) {
cin >> numbers[i];
}
cout << "The numbers are: ";
// print array elements
for (int n = 0; n < 5; ++n) {
cout << numbers[n] << " ";
}
return 0;
}
出力
Enter 5 numbers: 11 12 13 14 15 The numbers are: 11 12 13 14 15
繰り返しますが、for
を使用しました。 i = 0
から繰り返すループ i = 4
まで .各反復で、ユーザーからの入力を受け取り、それを numbers[i]
に保存しました .
次に、別の for
を使用しました ループしてすべての配列要素を出力します。
例 3:for ループを使用した配列要素の合計と平均の表示
#include <iostream>
using namespace std;
int main() {
// initialize an array without specifying size
double numbers[] = {7, 5, 6, 12, 35, 27};
double sum = 0;
double count = 0;
double average;
cout << "The numbers are: ";
// print array elements
// use of range-based for loop
for (const double &n : numbers) {
cout << n << " ";
// calculate the sum
sum += n;
// count the no. of array elements
++count;
}
// print the sum
cout << "\nTheir Sum = " << sum << endl;
// find the average
average = sum / count;
cout << "Their Average = " << average << endl;
return 0;
}
出力
The numbers are: 7 5 6 12 35 27 Their Sum = 92 Their Average = 15.3333
このプログラムでは:
<オール>ここでは、
sum =0
と count = 0
.for
を使用しました ループして配列要素を出力します。ループの各反復で、現在の配列要素を sum に追加します .1
for ループの終わりまでに配列のサイズを取得できるように、各反復で。average = sum / count;
で与えられます
注: レンジの for
を使用しました 通常の for
の代わりにループします ループ。
通常の for
loop では、反復回数を指定する必要があります。これは、配列のサイズによって決まります。
しかし、遠距離 for
loop はそのような指定を必要としません。
C++ 配列が範囲外
サイズ 10 の配列を宣言すると、配列にはインデックス 0 から 9 までの要素が含まれます。
ただし、インデックス 10 または 10 を超える要素にアクセスしようとすると、未定義の動作が発生します。
C言語