C++中的2D int数组
2D int array in C++
所以我想很快初始化一个int 2d数组,但我不知道怎么做。我做了一些搜索,没有一个说如何初始化2d数组,除了做:
int [SOME_CONSTANT][ANOTHER_CONSTANT] = {{0}};
基本上,我有8个顶点,我在一个数组中列出了立方体每个面的4个顶点。我试过这个:
int[6][4] sides = {{0, 1, 2, 3}, {4, 5, 6, 7}, {0, 4, 7, 3}, {7, 6, 2, 3}, {5, 1, 2, 6}, {0, 1, 5, 4}};
但这告诉我,"侧面"有一个错误,它期待着一个半殖民地。有没有办法像这样快速初始化数组?
谢谢!
你把[][]放在了错误的一边。试试这个:
int sides[6][4] = {{0, 1, 2, 3}, {4, 5, 6, 7}, {0, 4, 7, 3}, {7, 6, 2, 3}, {5, 1, 2, 6}, {0, 1, 5, 4}};
请记住,您真正拥有的是:
int **sides
(指向int指针的指针(。是侧面有尺寸,而不是int。因此,你也可以这样做:
int x, y[2], z[3][4], ...;
我想你是说
int sides[6][4] = {{0, 1, 2, 3}, {4, 5, 6, 7}, {0, 4, 7, 3}, {7, 6, 2, 3}, {5, 1, 2, 6}, {0, 1, 5, 4}};
int array[n][m]
的行为与int array[n * m]
类似。
事实上,array[i][j] = array[m * i + j]
适用于所有的i, j
。
因此int array[2][3] = {1, 2, 3, 4, 5, 6};
是一个有效的声明,例如
array[1][1] = array[3 * 1 + 1] = array[4] = 5
。
int sides[6][4] = {{0, 1, 2, 3}, {4, 5, 6, 7}, {0, 4, 7, 3}, {7, 6, 2, 3}, {5, 1, 2, 6}, {0, 1, 5, 4}};
我不是一个普通的c++程序员,但我看起来int sides[6][4]
似乎在编译,而int[6][4] sides
却失败了。像C#这样的语言可以让你在两边都有[][]
,但显然C++没有。
int sides[6][4] = ...
应该能做到这一点。听起来你可能来自Java(或其他语言(背景,所以我推荐一本C++书《最终C++图书指南和列表》来了解更多细节。
是的,预期的边类型是int[6][4]
,但C++有时会有令人困惑的语法。声明所述数组的方法是:
int sides[6][4] = {/*stuff*/};
函数指针也会遇到这种情况,但更糟糕的是:
int (*myfuncptr)(int); //creates a function pointer called myfuncptr
不过,使用函数指针,您可以做到这一点:
typedef int (*func_ptr_type)(int);
func_ptr_type myfuncptr;
不幸的是,数组没有相应的魔术。
我会在函数之外创建一个数组,并将其分配给本地。这很可能会调用memcpy或只是内联内存复制循环
这是你能得到的最快的
- 如何在cpp.中使用协议缓冲区存储大缓冲区/数组(char/int)
- 按字符值访问int数组
- 将 int 数组转换为 std::vector<int*>
- 比较if语句中的数组值和int值
- C++,在int数组中输入字符串或字符会输出0,而不是ascii或error
- 在c++中获取两个大int,并将它们存储在数组中
- 声明数组>> int arr[] 时出错;在C++(虽然在 Java 中有效)?
- 有没有办法用 2D 数组 (int) 重载构造函数?
- 当大小未知时,如何迭代指向数组 (int*) 的指针?
- 接受来自函数的二维数组(int 类型)并将其返回到主函数
- 数组 + int 作为一个参数做什么
- 如何制作'bit'数组而不是数组'int'?
- 动态2d数组:int(*ptr)[4]=new int[7][4];
- 为[z][y][x]int定义数组int[x][y][z]有什么好处?
- 用Visual c++编写二维数组int[n][m]到HDF5文件
- 数组int未正确返回
- 将元素推送到动态分配的指针数组int C++
- 如何在另一个数组中插入多维数组(int而非char)
- 将数组(int*)设置为NULL是否释放其占用的内存
- C++如何将数组 int[10] push_back std::vector<int[10]>?