【发布时间】:2014-09-19 06:04:15
【问题描述】:
我是 C++ 编程的初学者。我想构造一个列大小不同的动态二维数组,这是事先不知道的。
例如,来自数组 A[9]={1,2,3,0,4,0,1,2,1}。 每次遇到 value = 0 的元素时,都会创建一个新行。基本上当遇到 0 时,行值增加,列值重置为 0。如果遇到非零值,则保持行值并增加列值。我还想找出二维数组的行和列大小。我还希望能够将列和行值存储在其他变量中。 基于上面的例子,我想要的二维数组应该如下所示。
1 2 3
0 4
0 1 2 1
以下是我正在开发的程序。我不知道如何将行和列值的变化与我的二维数组联系起来。
int nRows = 0;
int **X = new int *[nRows];
int *S = new int [nRows];
int nCols=-1;
int array[9]={1,2,3,0,4,0,1,2,1};
for(int i=0; i<9; i++)
{if (array[i]==0)
{nRows++;
nCols=0;}
else
nCols++;}
for(int i=0; i<nRows; i++)
{
X[i] = new int[nCols];
S[i] = nCols;
cout<<"\n"<<S[i];}
我已经搜索了其他相关问题,但据我了解,他们都自己为每行分配列大小,而不是依赖于其他公式。请原谅我的英语,如果我能澄清我的问题,请告诉我。谢谢。
【问题讨论】:
-
“我想构建一个动态二维数组,其列大小不同,事先不知道。” - 你在这里:
std::vector<std::vector<int>> arr;