c++ - C ++将大数组拆分/分区为较小的数组
问题描述
这将是我对 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 个元素。
我对此有两个问题:
在接下来的步骤中如何做到这一点?即我有创建第二个子数组的功能,不知道如何开始将参数从基本数组的某个点传递到另一个。
arr1 = 新双 [splitVal]; for(UI i=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;
}
这肯定不是最理想的方法,可以使用模板函数来处理。我会在这方面做更多的工作。
这怎么可能更优化?
推荐阅读
- rust - 带有派生宏的 Clap 选项无法在 rust clap 3.0.0-beta.5 中编译
- typescript - 将 mongoose 从 5 升级到 6 'typeof ObjectId' 类型的值不可调用。您的意思是包括“新”吗?
- python - 将变量中的参数存储传递给 argparse
- python - 如何阻止此程序弹出?
- python - 如何用其他字符串python替换加号
- c++ - 如何使用 InsertEffect 将 MFT 音频效果动态添加到 MFPMediaPlayer?
- symfony - Symfony 5 EasyAdmin3 在从列表中选择选项时添加新的 crud 实体
- html - CSS:如何制作超越前一个容器的动态布局?
- python - 在 ubuntu 20.04 中安装术语 ctcdecode 时出错
- assembly - 如何打印斐波那契数列中的前 20 个元素(组件 8086)