2015-02-21 3 views
-3
int** DATA = new int*[10]; 
DATA[0] = new int[100]; //works 
DATA[1] = new int[100][5]; //dont work 

DATA[1][100] = 1; 

привет, я пытаюсь создать зубчатый массив, но нужно 5 столбцов. спасибоПопытка создать зубчатый массив C++

+1

Используйте std :: vector. Кроме того, количество измерений в массиве не изменяется, оно является частью типа, поэтому вы должны объявить его как таковое уже. –

ответ

1

Вам действительно нужен зубчатый массив (разное количество столбцов для каждой строки) или просто двумерный массив с 5 столбцами для каждой строки. В обоих случаях совет Ульриха, предпочитающий std :: vector поверх голых массивов, хорош, и вы должны это учитывать.

Однако, если вы абсолютно требуют двумерный массив, созданный в C-стиле, способ сделать это является

int** p = new int*[10]; 
for(int i=0; i<10; i++) { 
    p[i] = new int[20]; 
} 

p[7][17] = 177; 

Это создаст 2D массив с 10 строк и 20 столбцов, которые могут быть доступны с помощью 2D синтаксис массива.

+0

Привет. Я читаю рыночные данные из файлов csv, и общее количество строк варьируется в каждом файле. Я мог бы использовать большой 2D-массив, однако это не кажется очень эффективным. –

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