アレイのすべての要素をC/C++で同じ値に初期化します
の中に 前の投稿、C /C++でアレイを宣言および初期化する方法について説明しました。この投稿では、C /C++ですべてのアレイ要素を同じ値で初期化する方法について説明します。
1.イニシャライザリストの使用
同じ値でC/C++のアレイを初期化するための単純な方法は、次のような初期化子リストを提供することです。
1 2 3 4 |
int arr[5] = { 1, 1, 1, 1, 1}; //またはサイズを指定しない int arr[] = { 1, 1, 1, 1, 1 }; |
空の初期化子リストを指定するか、初期化子リストで0を指定すると、アレイは0に初期化されます。
1 2 |
int arr[5] = {}; //結果は[0、0、0、0、0]になります int arr[5] = { 0 }; //結果は[0、0、0、0、0]になります |
2.指定されたイニシャライザーの使用
GCCコンパイラでは、 指定された初期化子。要素の範囲を同じ値に初期化するには、次のように記述できます。 [first ... last] = value
.
1 2 3 4 |
int arr[5] = {[0 ... 4] = 1}; //またはサイズを指定しない int arr[] = {[0 ... 4] = 1}; |
3.マクロの使用
大きなアレイでイニシャライザリストを使用することはできません。指定されたイニシャライザはGCCコンパイラでのみ機能します。同じ値で巨大なアレイを初期化するために、以下に示すようにマクロを使用できます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
#include <stdio.h> #include <stdlib.h> #define x1 1 #define x2 x1, x1 #define x4 x2, x2 #define x8 x4, x4 #define x16 x8, x8 #define x32 x16, x16 int main(void) { int arr[] = { x32, x8, x4, x1 }; int n = sizeof(arr)/sizeof(int); // (32 + 8 + 4 + 1) printf("The size of the array is %d\n", n); printf("The value of any element is %d", arr[rand() % n]); return 0; } |
出力:
The size of the array is 45
The value of any element is 1
4.Forループの使用
forループを使用してアレイを初期化することもできますが、初期化は1行で行われません。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
#include <stdio.h> int main(void) { int n = 5; int val = 1; //アレイを宣言します int arr[n]; //アレイを初期化します for (int i = 0; i < n; i++) { arr[i] = val; } //残りのコード return 0; } |
5.使用する std::fill_n
関数
最後に、 std::fill_n
C++では、最初の値に値を割り当てます n
アレイ要素。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
#include <iostream> #include <algorithm> int main() { int n = 5; int val = 1; int arr[n]; std::fill_n (arr, n, val); //常に1を出力します std::cout << arr[rand() % n]; return 0; } |
出力:
1
これで、C /C++ですべてのアレイ要素を同じ値に初期化できます。
こちらも参照: