考虑以下C ++代码示例:
int array_1[] = {5,6,7};
int array_2[] = {6,7,8,9};
int array_3[] = {2,3};
int* meta_array[] = {array_1, array_2, array3};
现在我想迭代meta_array
子数组中的所有元素而不会导致seg错误。
问题当然是我无法获得数组的大小以避免超出其范围。
我可以sizeof array_1 / sizeof array_1[0]
来快速获得常见的1维数组的大小,但是当我在meta_array
时,每个元素都被转换为指针,所以{ {1}}将返回指针的字节大小而不是整个数组。因此,sizeof
并没有真正帮助我的事业。
是否有一个标准的解决方案来迭代非均匀的多维数组,或者我应该继续使用std :: vector?
答案 0 :(得分:2)
使用std::vector
。
或使用“结束”数字,但您必须确保不会有任何具有该值的元素。
int array_1[] = {5,6,7,-1};
int array_2[] = {6,7,8,9,-1};
int array_3[] = {2,3,-1};
int* meta_array[] =
{
array_1,
array_2,
array_3,
NULL
};
for(int i=0; meta_array[i] != NULL; ++i)
{
for(int j=0; meta_array[i][j] != -1; ++j)
printf("%d", meta_array[i][j]);
printf("\n");
}
答案 1 :(得分:0)