#include <iostream> |
int a[5]; // 整数を格納できる要素数 5 の配列の宣言
a[0] = 10; // 配列へのデータの書き込み
a[1] = 2;
a[2] = 0;
a[3] = -5;
a[4] = -23;
// 配列のデータをコンソールに表示
for(int i=0 ; i<5 ; i++){
std::cout << "配列aの" << i << "番目の値は" << a[i] << "\n";
}
|
配列aの0番目の値は10 配列aの1番目の値は2 配列aの2番目の値は0 配列aの3番目の値は-5 配列aの4番目の値は-23 |
|
[注意] 1 年生で学んだ Visual Basic における配列では、 Dim a(5) As Integer により、a(0)、a(1)、a(2)、a(3)、a(4)、a(5) の 6 つの変数が使えたことに注意。 ただし、プログラミング言語の世界では、むしろVisual Basic のように 6 つの変数が使えることの方が特殊である。 C/C++、Java、C# などのように「宣言『int a[5];』により a[0] ~ a[4] の 5 つの変数が使える」という形式に早く慣れよう。 |
a[0] = 10; // 配列へのデータの書き込み a[1] = 2; a[2] = 0; a[3] = -5; a[4] = -23; |
// 配列のデータをコンソールに表示
for(int i=0 ; i<5 ; i++){
std::cout << "配列aの" << i << "番目の値は" << a[i] << "\n";
}
|
int a[5]; // 要素数 5 の配列の宣言
a[0] = 10; // 配列へのデータの書き込み
a[1] = 2;
a[2] = 0;
a[3] = -5;
a[4] = -23;
a[5] = -1;
// 配列のデータをコンソールに表示
for(int i=0 ; i<5 ; i++){
std::cout << "配列aの" << i << "番目の値は" << a[i] << "\n";
}
|
int a[5] = {10, 2, 0, -5, -23}; // 要素数 5 の配列の初期化
// 配列のデータをコンソールに表示
for(int i=0 ; i<5 ; i++){
std::cout << "配列aの" << i << "番目の値は" << a[i] << "\n";
}
|
int a[] = {10, 2, 0, -5, -23}; // 要素数 5 の配列の初期化
|
int a[5] = {10, 2, 0, -5}; // 値の与えられなかった a[4] は 0 で初期化される。
|
int a[5] = {10, 2, 0, -5, -23, -7}; // エラー
|
int a[10]; // 整数を格納できる要素数 10 の配列の宣言
// 3の倍数を10個格納
a[0] = 0;
a[1] = 3;
a[2] = 6;
a[3] = 9;
a[4] = 12;
a[5] = 15;
a[6] = 18;
a[7] = 21;
a[8] = 24;
a[9] = 27;
// 要素数 10 の配列のデータをコンソールに表示
for(int i=0 ; i<10 ; i++){
std::cout << "配列aの" << i << "番目の値は" << a[i] << "\n";
}
|
// 3の倍数を10個格納
int a[10] = {0, 3, 6, 9, 12, 15, 18, 21, 24, 27};
|
int a[10]; // 整数を格納できる要素数 10 の配列の宣言
// 3の倍数を10個格納
for(int i=0 ; i<10 ; i++){
a[i] = 3*i;
}
// 要素数 10 の配列のデータをコンソールに表示
for(int i=0 ; i<10 ; i++){
std::cout << "配列aの" << i << "番目の値は" << a[i] << "\n";
}
|
int a[10];
// 数列の初期値
a[0] = 0;
// 漸化式は i>=1 のときのみ
for(int i=1 ; i<10 ; i++){
a[i] = 2*a[i-1]-1;
}
// コンソールへの表示は i=0 からで OK
for(int i=0 ; i<10 ; i++){
std::cout << "配列aの" << i << "番目の値は" << a[i] << "\n";
}
|
| 記憶装置 | 転送速度 | 記憶容量 | ||
| ハードディスク | 100 MByte/s 前後 | 遅 | 数百 GByte 程度 | 大 |
| メインメモリ | 数 GByte/s (ハードディスクより一桁速い) | ↑ | 数 GByte 程度 (ハードディスクより二桁小さい) | ↑ |
| 二次キャッシュ (L2 Cache) | 最高 100 GByte/s 程度 (メインメモリより二桁速い) | ↓ | 数百 KByte 程度 (メインメモリより四桁小さい) | ↓ |
| 一次キャッシュ (L1 Cache) | 二次キャッシュよりさらに高速 | 速 | 二次キャッシュよりさらに小さい | 小 |
int n = 3; double arr[n]; // 要素数 n の配列の宣言→コンパイルエラー! |
int n = 3; double *arr; arr = new double[n]; // 要素数 n の配列として使える // arr[0], arr[1], …, arr[n-1] を使った何らかの処理 delete[] arr; // 使い終ったら削除の処理が必要 |
double arr[2][3]; // 要素数 2×3 の二次元配列の宣言
// 使えるのは
// arr[0][0], arr[0][1], arr[0][2]
// arr[1][0], arr[1][1], arr[1][2]
// の6個
for(int i=0 ; i<2 ; i++){
for(int j=0 ; j<3 ; j++){
// a[i][j]に関する操作
}
}
|
int m, n;
m = 2;
n = 3;
double **arr; // ポインタへのポインタ
arr = new double*[m];
for(int i=0 ; i<m ; i++){
arr[i] = new double[n];
}
// 以上で arr[m][n] として使える
// 使い終ったらメモリを解放
for(int i=0 ; i<m ; i++){
delete[] arr[i];
}
delete[] arr;
|