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;