从一个系列数组(在 C++ 中)创建数组数组

create array of arrays from one array of Series(in c++)

本文关键字:数组 创建 C++ 个系列      更新时间:2023-10-16

我如何从一维数组系列中创建数组数组,例如:我有一个这样的数组:

long int arr[20] = {23, 91, -71, -63, 22,  55, 51, 73, 17, -19,-65, 44, 95,  66, 82, 85, 97, 30, 54, -34};

我想按升序创建数组数组,例如:(在 C++ 中)

23, 91  
-71, -63, 22,  55  
51, 73  
17  
-19  
-65, 44, 95  
66, 82, 85, 97  
30, 54  
-34

已经尝试过现在有多少个数组

int sum=0;
for(int i=0;i<n-1;i++)
    if(arr[i]>arr[i+1])sum++;
return sum;
int sum=0;
for(int i=0;i<n-1;i++)
    if(arr[i]>arr[i+1])sum++;
return sum;

应该是

int sum = 0;
if (n > 0)
{
    for (int i = 0; i < n - 1; i++)
        if (arr[i] > arr[i+1])
            sum++;
    sum++;
}

您的版本不计算最后一个升序数字序列。

这是一个开始,接下来要做的是为每行的指针分配足够的内存。然后,您再次浏览数字,计算每行的长度,为该行分配内存,然后再次浏览该行,复制该行的数字。它只是循环(内部循环)。如果您遇到困难,请去发布代码。

创建vector of vector而不是array of array怎么样?在阵列中,您必须确定会导致您的大小,无论是index out of bound exception还是巨大的space lost。如果使用矢量,则不会确定矢量的大小,它会在您填充矢量大小时分配更多空间。

如果你的初始数组是降序的,你的双精度数组大小将是nx1的,如果是升序,那么1xn所以你必须使你的双数组nxn不给出exception,这在n > 10^4时是不可接受的(大约)。

vector of vector的一些基本语法如下:

vector<vector<int>> myvect; //initialization
myvect.at(i).at(j) = x;     //reaching i_th row, j_th col element
myvect.at(0).push_back(1);  //add element to the end of the row0.    

这个网站在解释向量方面看起来不错。

这是示例代码,我没有测试它,所以可能有小的语法错误,

vector<vector<int>> myvect; //initialization
int size = 20;
long int arr[size] = {23, 91, -71, -63, 22,  55, 51, 73, 17, -19,-65, 44, 95,  66, 82, 85, 97, 30, 54, -34};
int row = -1; int val = arr[0]+1;
for(int i = 0; i < size; i++){
    if(arr[i] < val){
        row++;
        myvect.push_back(vector<int> () );
    }
    myvect.at(row).push_back(arr[i]);
}

代码基本上是这样的。

你可以做

array[9][4] = {
            { 23, 91 },  
            { -71, -63, 22,  55  },
            { 51, 73  },
            { 17  },
            { -19  },
            { -65, 44, 95  },
            { 66, 82, 85, 97  },
            { 30, 54  }
            { -34 }
          };