C ++将大型数组拆分/分割为较小的数组

时间:2019-01-19 11:14:26

标签: c++ arrays

这是我对StackOverflow的第一个问题。我想解决的问题是如何将一个大数组填充机智值拆分为较小的值。 这是这样做的好方法吗?

该数组有10000个元素,我想将其拆分为8个较小的元素。

下面的一些代码: 我如何生成数组

double* GenerateRandomArray(UI nSize){
    double* rndArr=nullptr;
    rndArr = new double [baseArrSize];
    double randVal=0.0;
    std::uniform_real_distribution<double> unif(low_val, high_val);
    std::default_random_engine rndEng;
    for(int i=0; i<baseArrSize; ++i){
        randVal = unif(rndEng);
        rndArr[i] = randVal;
    }

    delete [] rndArr;

}

现在我的第二个函数应该将此数组拆分/分割为较小的数组,或者也许我应该创建其他8个函数,这些函数会将基本数组的适当部分复制到其子数组中?

一些有关如何捕获数组第一部分的代码:

double* PartitionArray1(double* rootArr){
    rootArr = new double [baseArrSize];
    const UI splitVal = baseArrSize/8;
    double* arr0=nullptr;

    arr0 = new double[splitVal];
    for(UI i=0; i<splitVal; i++){
            arr0[i] = rootArr[i];
    }
    for(UI j=0; j<splitVal; ++j)
        std::cout << arr0[j] << " ";
    return arr0;

}

这似乎可行-在检查arr0时,它有来自基本数组的1250个元素。

我对此有两个问题:

  1. 如何在下一个stps中执行此操作?即,我具有创建第二个子数组的功能,不知道如何开始将参数从基本数组的某个点传递到另一个数组。

    arr1 = new double [splitVal];     for(UI i = 0; i

  2. 这甚至是有效的方法吗?也许生成一个大向量然后将其拆分为数组会更好?

谢谢

1 个答案:

答案 0 :(得分:0)

非常感谢您的评论。 我这样做的方式与建议的有所不同:

double* SplitFirstArray_1st(double *arr0){
            const UI arrSize = baseElements/4;
    std::cout << "\n1st split: \n";
    double *arrSplited1=nullptr;
    arrSplited1 = new double [arrSize];
    for(UI i=0; i<arrSize; i++){
        arrSplited1 = arr0;
    }

    for(UI j=0; j< arrSize; ++j){
        std::cout << arrSplited1[j] << " ";
        }
    return arrSplited1;
    delete [] arrSplited1, arr0;

}

类似的方法在接下来的功能中完成,即

double* SplitThirdArray_3rd(double *arr0){
    const UI arrSize = baseElements/4;
    std::cout << "\n3rd split: \n";
    double *arrSplited3=nullptr;
    arrSplited3 = new double [arrSize];
    double *arr3splitedStart = &arr0[arrSize+25];
    for(UI i=0; i<arrSize; i++){
        arrSplited3 = arr3splitedStart;
    }
    for(UI j=0; j< arrSize; ++j){
        std::cout << arrSplited3[j] << " ";
    }
    return arrSplited3;
    delete [] arr3splitedStart, arrSplited3;

}

这肯定不是最理想的方法,可以使用模板函数来处理。我将为此做更多的工作。

如何对其进行优化?