gpt4 book ai didi

c++ - 具有不同列大小的动态二维数组,事先不知道

转载 作者:行者123 更新时间:2023-11-28 06:45:58 25 4
gpt4 key购买 nike

我是 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];}

我已经搜索了其他相关问题,但据我了解,所有这些问题都是自己为每一行分配列大小,而不是依赖于其他公式。请原谅我的英语,如果我能澄清我的问题,请告诉我。谢谢。

最佳答案

这很好用:

int givenArray[9]={1,2,3,0,4,0,1,2,1};

vector<vector<int>> my2dArray;

for(int i=0;i<9;i++) //iterate through all elements of the given array
{
if (i==0) //adding the first element
{
my2dArray.resize(my2dArray.size()+1);
my2dArray.back().push_back(givenArray[i]);
continue;
}
if (givenArray[i] == 0) //re-size if 0 is encountered
{
my2dArray.resize(my2dArray.size()+1);
}
my2dArray.back().push_back(givenArray[i]);
}

以二维方式打印输出:

for (auto vec1d : my2dArray){
{
for (auto i : vec1d){
cout << i << " ";
}
cout << endl;
}
}

关于c++ - 具有不同列大小的动态二维数组,事先不知道,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24988676/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com