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++
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++
Вам действительно нужен зубчатый массив (разное количество столбцов для каждой строки) или просто двумерный массив с 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 синтаксис массива.
Привет. Я читаю рыночные данные из файлов csv, и общее количество строк варьируется в каждом файле. Я мог бы использовать большой 2D-массив, однако это не кажется очень эффективным. –
Используйте std :: vector. Кроме того, количество измерений в массиве не изменяется, оно является частью типа, поэтому вы должны объявить его как таковое уже. –