#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; |