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

я хочу, чтобы вставить ** значение АА * А, вы, ребята, помочь мне с этим?

+1

Не смешивайте 'новый' и' 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], это не сработает, так что нет. Кстати, есть некоторые интересные комментарии в разделе комментариев вашего вопроса, вы можете взглянуть на них и улучшить свой код.

Смежные вопросы