C++ tips¶
Define dynamic array¶
To define a dynamic array
int *p1 ; p1 = new int [row] ; // init for( i = 0 ; i < row ; i ++ ) p1[i] = rand () % 10 ; // delete delete [] p1 ;
To define a 2D dynamic array
int** p2 = new int*[rows]; for (int i = 0; i < rows; i ++) { p2[i] = new int[cols]; } // init for(int i = 0 ; i < row ; i ++) for( j = 0 ; j < col ; j ++) p2[i][j] = i*cols+j; // delete for(int i = 0 ; i < row ; i ++) delete []p2[i]; delete []p2;
To define a 3D array
int *** p3 ; p3 = new int**[height ] ; for( i = 0 ; i < height ; i ++ ) p3[i] = new int*[row] ; for( i = 0 ; i < height ; i ++ ) for( j = 0 ; j < row ; j ++ ) p3[i][j] = new int[col] ; // init for(i = 0 ; i < height ; i ++ ) for(j = 0 ; j < row ; j ++ ) for( k = 0 ; k < col ; k ++) p3[i][j][k] = rand()%10 ; // delete for( i = 0 ; i < hight ; i ++ ) for( j = 0 ; j < row ; j ++ ) delete []p3[i][j] ; for( i = 0 ; i < hight ; i ++ ) delete []p3[i] ; delete []p3 ;
To define a row major dynamic 2D array¶
int** h_data = new int*[rows];
h_data[0] = new int[rows * cols];
for (int i = 1; i < rows; ++i)
h_data[i] = h_data[i-1] + cols;
// init
for(int i = 0; i < rows; i++) // init
for(int j = 0; j < cols; j++)
h_data[i][j] = 0;
// delete
delete[] h_data[0];
delete[] h_data;