2016-04-15 70 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; 
} 

我想插入** AA值* A,你们可以帮助我?

+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],那不起作用,所以不要。顺便说一句,在你的问题的评论部分有一些有趣的评论,你可能想看看他们并改进你的代码。