数组 C++ 中的大括号初始化
Brace initialization in arrays c++
我想知道如何将值初始化为数组的某些元素,例如。
int arr[5]={3,5,6};
3的索引为0,5的索引为2
所以索引 1 被编译器跳过并自动赋值!
感谢您的帮助!
in a way that the index of 3 is 0 and 5 is 2.
那就是
int arr[5] = {3,0,5,6};
So index 1 is skipped and automatically assigned value by compiler!
你不能跳过中间的元素,只能在最后,就像你的
int arr[5] = {3,5,6};
其中最后缺失的元素用0初始化。
请注意,您想要的在 C 中是可能的。来自 cppreference 的示例:
int n[5] = {[4]=5,[0]=1,2,3,4} // holds 1,2,3,4,5
然而,这在标准 C++ 中是不可能的(现在?)。
PS:如果你不关心可移植性(实际上你应该关心)你可以研究你的编译器手册,看看它是否也允许 c 风格的初始化在 C++ 中。
I want to know how to intialize values to some elements of array ... So index 1 is skipped
这是不可能的。只能按顺序为元素提供初始化器;他们不能被跳过。您可以做的是将数组初始化为零,然后分配一些元素。示例:
int arr[5]{};
arr[0] = 3;
arr[2] = 5;
或者,您可以改用默认初始化:
int arr[5];
arr[0] = 3;
arr[2] = 5;
在这种情况下,元素在分配之前将具有不确定的值。永远不要读取不确定的值;它没有用,通常会导致未定义的行为。
我想知道如何将值初始化为数组的某些元素,例如。
int arr[5]={3,5,6};
3的索引为0,5的索引为2
所以索引 1 被编译器跳过并自动赋值!
感谢您的帮助!
in a way that the index of 3 is 0 and 5 is 2.
那就是
int arr[5] = {3,0,5,6};
So index 1 is skipped and automatically assigned value by compiler!
你不能跳过中间的元素,只能在最后,就像你的
int arr[5] = {3,5,6};
其中最后缺失的元素用0初始化。
请注意,您想要的在 C 中是可能的。来自 cppreference 的示例:
int n[5] = {[4]=5,[0]=1,2,3,4} // holds 1,2,3,4,5
然而,这在标准 C++ 中是不可能的(现在?)。
PS:如果你不关心可移植性(实际上你应该关心)你可以研究你的编译器手册,看看它是否也允许 c 风格的初始化在 C++ 中。
I want to know how to intialize values to some elements of array ... So index 1 is skipped
这是不可能的。只能按顺序为元素提供初始化器;他们不能被跳过。您可以做的是将数组初始化为零,然后分配一些元素。示例:
int arr[5]{};
arr[0] = 3;
arr[2] = 5;
或者,您可以改用默认初始化:
int arr[5];
arr[0] = 3;
arr[2] = 5;
在这种情况下,元素在分配之前将具有不确定的值。永远不要读取不确定的值;它没有用,通常会导致未定义的行为。