这是我对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个元素。
我对此有两个问题:
如何在下一个stps中执行此操作?即,我具有创建第二个子数组的功能,不知道如何开始将参数从基本数组的某个点传递到另一个数组。
arr1 = new double [splitVal]; for(UI i = 0; i
谢谢
答案 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;
}
这肯定不是最理想的方法,可以使用模板函数来处理。我将为此做更多的工作。
如何对其进行优化?