コハク さんが書きました:関数の戻り値として取得する方法以外でpにnew_geneの値を挿入することはできないでしょうか。
挿入するというのはよくわからないですが、上書きならばポインタや
コード:
void Merge(double ***parents,int size,int size_2){
double **new_gene=new double*[size];
for(int i=0;i<size;i++){
*(new_gene+i)=new double[size_2];
}
//new_geneの要素を並び替える操作
//コピー
for(int i=0;i<size;i++){
delete[] (*parents)[i];
}
delete[] *parents;
*parents=new_gene;
}
int main(){
double **p=new double*[10];
for(int i=0;i<10;i++){
*(p+i)=new double[2];
}
Merge(&p,10,2);
for(int i=0;i<10;i++){
for(int j=0;j<2;j++){
cout<<(*(p+i))[j]<<endl;
}
}
for(int i=0;i<10;i++){
delete[] *(p+i);
}
delete[] p;
return 0;
}
参照を使ってできます。
コード:
void Merge(double **&parents,int size,int size_2){
double **new_gene=new double*[size];
for(int i=0;i<size;i++){
*(new_gene+i)=new double[size_2];
}
//new_geneの要素を並び替える操作
//コピー
for(int i=0;i<size;i++){
delete[] parents[i];
}
delete[] parents;
parents=new_gene;
}
int main(){
double **p=new double*[10];
for(int i=0;i<10;i++){
*(p+i)=new double[2];
}
Merge(p,10,2);
for(int i=0;i<10;i++){
for(int j=0;j<2;j++){
cout<<(*(p+i))[j]<<endl;
}
}
for(int i=0;i<10;i++){
delete[] *(p+i);
}
delete[] p;
return 0;
}
メモリリークを起こさないように、コードに余計な全角文字が混ざらないように注意してください。