二维数组值C ++

我想声明一个2D数组并为其赋值,而不运行for循环。

我以为我可以使用以下想法

int array[5] = {1,2,3,4,5}; 

这也适用于初始化2Darrays。 但显然我的编译器不喜欢这个。

 /* 1 8 12 20 25 5 9 13 24 26 */ #include  int main() { int arr[2][5] = {0}; // This actually initializes everything to 0. arr [1] [] = {1,8,12,20,25}; // Line 11 arr [2] [] = {5,9,13,24,26}; return 0; } 

J:\ CPP \ Grid> bcc32.exe Grid.cpp

Borland C ++ 5.5.1 for Win32版权所有(c)1993,2000 Borland

Grid.cpp:

错误E2188 Grid.cpp 11:函数main()中的表达式语法

错误E2188 Grid.cpp 12:函数main()中的表达式语法

警告W8004 Grid.cpp 14:’arr’被分配一个从未在函数main()中使用的值

*编译中的2个错误*

请帮助确定使用我的值集初始化2d数组的正确方法。

像这样:

 int main() { int arr[2][5] = { {1,8,12,20,25}, {5,9,13,24,26} }; } 

这应该由您的C ++教科书涵盖:您使用的是哪一本?

无论如何,更好的是,考虑使用std::vector或一些现成的矩阵类,例如来自Boost。

在C或C ++中初始化多维数组的正确方法是

 int arr[2][5] = {{1,8,12,20,25}, {5,9,13,24,26}}; 

如果需要,您可以使用相同的技巧初始化更高维的数组。

另外,在初始代码中要小心 – 您试图在数组中使用1索引偏移来初始化它。 这没有编译,但是如果它确实会导致问题,因为C数组是0索引的!

只是想指出你不需要指定数组的所有维度。

最左边的维度可以由编译器“猜测”。

 #include  int main(void) { int arr[][5] = {{1,2,3,4,5}, {5,6,7,8,9}, {6,5,4,3,2}}; printf("sizeof arr is %d bytes\n", (int)sizeof arr); printf("number of elements: %d\n", (int)(sizeof arr/sizeof arr[0])); return 0; } 

int iArray[2][2] = {{1, 2}, {3, 4}};

将2D数组视为数组数组。

另一种方法是将2Darrays表示为一维arrays。 这可以使元素操作更有效。 您应该将它包装在一个也包含宽度和高度的类中。

另一种方法是将2D数组表示为std::vector > 。 这将允许您使用STL的算法进行数组运算,该向量还将为您处理内存管理。