Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++;:嵌套用于二维数组上的循环;“自动”; 在C++中循环一个名为“a”的3x3数组,我使用了以下代码。< /P> int a[3][3] {}; for(auto &b: a) { for(auto &c: b) { std::cout << c << std::endl; } } inta[3][3]{}; 对于(汽车和b:a){ 用于(自动和控制:b){ std::cout_C++_Arrays_For Loop_Auto - Fatal编程技术网

C++;:嵌套用于二维数组上的循环;“自动”; 在C++中循环一个名为“a”的3x3数组,我使用了以下代码。< /P> int a[3][3] {}; for(auto &b: a) { for(auto &c: b) { std::cout << c << std::endl; } } inta[3][3]{}; 对于(汽车和b:a){ 用于(自动和控制:b){ std::cout

C++;:嵌套用于二维数组上的循环;“自动”; 在C++中循环一个名为“a”的3x3数组,我使用了以下代码。< /P> int a[3][3] {}; for(auto &b: a) { for(auto &c: b) { std::cout << c << std::endl; } } inta[3][3]{}; 对于(汽车和b:a){ 用于(自动和控制:b){ std::cout,c++,arrays,for-loop,auto,C++,Arrays,For Loop,Auto,int&(b[3])相当于int&b[3],即长度为三的int引用数组。这与数组int a[3][3]中元素的类型不对应 数组int a[3][3]中的元素属于int[3]类型,即长度为3的int数组。通过将b声明为int(&b)[3]可以声明对此类类型的引用。如果您有这样的数组 T a[N1][N2][N3]; 如果T是某种类型说明符,N1、N2和N3是数组的大小,那么对该数组的引用如下所示 T ( &ra )[N1][N2][N3] = a; 如果需要声明对数组中类型为T[N2

int&(b[3])
相当于
int&b[3]
,即长度为三的
int
引用数组。这与数组
int a[3][3]
中元素的类型不对应


数组
int a[3][3]
中的元素属于
int[3]
类型,即长度为3的
int
数组。通过将
b
声明为
int(&b)[3]
可以声明对此类类型的引用。

如果您有这样的数组

T a[N1][N2][N3];
如果
T
是某种类型说明符,
N1
N2
N3
是数组的大小,那么对该数组的引用如下所示

T ( &ra )[N1][N2][N3]  = a;
如果需要声明对数组中类型为
T[N2][N3]
的元素(元素)的引用,则可以编写示例

T ( &e )[N2][N3] = a[0];
回到您的示例,您声明了一个数组

int a[3][3] {};
此数组的元素的类型为
int[3]
。因此,要声明对数组元素的引用,必须编写

for ( int ( %row )[3] : a )
至于这个声明,

int &(b[3])

(括号为冗余),然后声明三个元素的数组,类型为<代码> int和。但是根据C++标准,您可能不声明引用数组。

从C++标准(83.4数组)

声明中的1,其中D的形式为

并且声明T D1中的标识符的类型为 “派生声明器类型列表T”,然后是D的标识符类型 是数组类型;如果D的标识符类型包含自动 类型说明符,程序格式不正确。T称为数组 元件类型;该类型不应为参考类型 cvqualified)类型void、函数类型或抽象类 键入

int(&b)[3]
这是对a
int[3]
的引用。这是一种复杂的语法。因此您确实引用了长度为3的数组。很遗憾,您的“读取”是错误的,
int&(b)[3]
被解析为引用数组,而
int(&b)[3]
是对大小为3的数组的引用。(请参阅)因为(inti=0;我认为
int(&b)[3]:a
仍然太可读了。你有什么办法让它更不可读吗?使用I3=int[3];for(I3&b:a){//在这里,当我看起来像1时,看起来更糟。
for ( int ( %row )[3] : a )
int &(b[3])
D1 [ constant-expressionopt] attribute-specifier-seqopt