2016-05-02 3 views
0

2つの2D double行列を連結する簡単な関数を書こうとしました。2つのdouble行列を連結する

double** concat(double **upmat,double **lowmat,int row,int col,int filecount) 
{ 

double **temp=new double* [filecount*row]; 
for(int i=0;i<row*filecount;i++){ 
    temp[i]=new double [col]; 
} 

if (filecount>1) 
    std::copy(upmat,upmat+(filecount-1)*row*col,temp); 
std::copy(lowmat,lowmat+row*col,temp+(filecount-1)*row*col); 


return temp; 
} 

この関数は、2次元ポインタを返します。そのポインタからデータにアクセスしようとすると、無効なメモリアクセスエラーが表示されます!!

+0

forループは 'row'行か' filecount * row'行ですか? – stark

+0

@starkありがとうございました。 –

+0

@Starkこれで、上位の行列の内容がコピーされます。下の行列はありません!!これで私を助けてくれますか? –

答えて

0

temp、low、highはすべてdouble**(doubleへのポインタへのポインタ)ですが、std :: copyはdouble*(doubleへのポインタ)のように行います。

+0

私はそれを得ました。ありがとう。 :) –

関連する問題