unk*_*own 28 c c++ jagged-arrays
在C或C++中是否存在锯齿状数组?
当我编译这个:
int jagged[][] = { {0,1}, {1,2,3} };
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
错误:声明`jagged'作为多维数组必须具有除第一个之外的所有维度的边界
Cro*_*ent 24
在CI中将使用指针数组.
例如:
int *jagged[5];
jagged[0] = malloc(sizeof(int) * 10);
jagged[1] = malloc(sizeof(int) * 3);
Run Code Online (Sandbox Code Playgroud)
等等
ram*_*ion 16
有很多方法可以做到这一点.这是另一种方式:
int jagged_row0[] = {0,1};
int jagged_row1[] = {1,2,3};
int *jagged[] = { jagged_row0, jagged_row1 };
Run Code Online (Sandbox Code Playgroud)
小智 14
如果你只想初始化它,你可以说:
int jagged[][3] = { {0,1}, {1,2,3} };
Run Code Online (Sandbox Code Playgroud)
但阵列仍将具有形状[2] [3].如果你想要一个真正的锯齿状数组,你将不得不动态创建它.如果你这样做,并且正在使用C++,你应该使用a std::vector
,如friol建议的那样.
Gab*_*ona 12
在C++中(未编译,可能还有更紧凑的语法):
std::vector<std::vector<int> > myArray;
myArray.push_back(std::vector<int>());
myArray.push_back(std::vector<int>());
myArray[0].push_back(0);
myArray[0].push_back(1);
myArray[1].push_back(1);
myArray[1].push_back(2);
myArray[1].push_back(3);
Run Code Online (Sandbox Code Playgroud)
所以现在你可以使用例如myArray [0] [0]等来访问元素.