2016-04-15 9 views
0

私はC++で単一のポインタベクトルに変換したいダブルポインタ行列を持っています。ここ コードです:ダブルポインタ行列をC++の単一ポインタベクトルに変換する方法は?

int main(){ 
    int AA[2][2] = {1,2,3,4}; 
    int i,j,k; 
    int kolB,barB; 
    int **BB,**CC; 
    int *A,*B,*C; 

    BB = new int*[barB]; 
    CC = new int*[2]; 

    for(i=0;i<kolB;i++){ 
     BB[i] = new int[kolB]; 
     CC[i] = new int[kolB]; 
    } 

    free(BB); 
    free(CC); 

    return 0; 
} 

私は* Aへ** AA値を挿入したい、君たちはこれで私を助けることができますか?

+1

'new'と' free() 'を混ぜてはいけません。 –

+0

mallocを使ってエラーが出るので、ちょうどこの方法で使用します。 –

+1

代わりに 'delete []'を使用してください。 –

答えて

0

私が正しくあなたの質問を理解していれば、あなたは二重のポインタ配列の各要素にアクセスし、このような単一のポインタ配列に入れたい:

//assuming kolB,barB,**BB have been initialized 
B=new int[kolB*barB];//create a one dimensional integer array to be pointed to by int* B 

//then copy the value from double pointer array to this new one dimensional array 
for(int i=0;i<barB;i++) 
    for(int j=0;j<kolB;j++) 
     B[(i*barB)+j]=BB[i][j];//you need to copy each value 

あなたがB=(int*)BB;を行うことを考えて、それをアクセスしている場合B[i]のように動作しないので、そうしないでください。あなたの質問のコメント欄に興味深いコメントがいくつかありますが、それらを見てコードを改善したいと思うかもしれません。

関連する問題