Upgrade to Pro — share decks privately, control downloads, hide ads and more …

OOP 2012 - Hint: Dynamic allocation in c++

OOP 2012 - Hint: Dynamic allocation in c++

allan914

May 08, 2012
Tweet

More Decks by allan914

Other Decks in Programming

Transcript

  1. Example 1 #include<iostream> using namespace std; int main() { int*

    a; int n; cin >> n; a=new int [n]; for(int i=0;i<n;i++) a[i]=i+1; for(int i=0;i<n;i++) cout << a[i] << " "; delete [] a; return 0; }
  2. Example 2 #include<iostream> using namespace std; int main() { int**

    a; int n,m; cin >> n; cin >> m; a=new int* [n]; for(int i=0;i<n;i++) a[i]=new int [m]; for(int i=0;i<n;i++) for(int j=0;j<m;j++) a[i][j]=i+j+1; for(int i=0;i<n;i++) { for(int j=0;j<m;j++) cout << a[i][j] << " "; cout << endl; } for(int i=0;i<n;i++) delete [] a[i]; delete [] a; return 0; }
  3. Example 2: Result  Sample Input 5 4  Sample

    Output 1 2 3 4 2 3 4 5 3 4 5 6 4 5 6 7 5 6 7 8
  4. Example 3 #include<iostream> using namespace std; int main() { int*

    a; int n,m; cin >> n; cin >> m; a=new int [n*m]; int** b; b=new int* [n]; for(int i=0;i<n;i++) b[i]=&(a[n*i]); for(int i=0;i<n;i++) for(int j=0;j<m;j++) b[i][j]=i+j+1; for(int i=0;i<n;i++) { for(int j=0;j<m;j++) cout << b[i][j] << " "; //cautious with CodeBlocks ! cout << endl; } delete [] b; delete [] a; return 0; }
  5. Example 3: Result  Sample Input 5 4  Sample

    Output 1 2 3 4 2 3 4 5 3 4 5 6 4 5 6 7 5 6 7 8
  6. Example 4 // Headers emitted, cautious with CodeBlocks ! void*

    new2d(int n,int m,int size) { void **a = new void* [m*sizeof(void*) + n*m*size]; for(int j=0;j<m;j++) a[j] = ((char *)(a+m)) + j*n*size; return a; } int main() { int** a; int n,m; cin >> n; cin >> m; a = (int**)new2d(m,n,sizeof(int)); for(int i=0;i<n;i++) for(int j=0;j<m;j++) a[i][j]=i+j+1; for(int i=0;i<n;i++) { for(int j=0;j<m;j++) cout << a[i][j] << " "; cout << endl; } delete [] a; return 0; }
  7. Example 4: Result  Sample Input 5 4  Sample

    Output 1 2 3 4 2 3 4 5 3 4 5 6 4 5 6 7 5 6 7 8
  8. Example 5 #include<iostream> #include<vector> using namespace std; int main() {

    int n,m; cin >> n; cin >> m; vector<vector<int> > a(n, vector<int>(m)); for(int i=0;i<n;i++) for(int j=0;j<m;j++) a[i][j]=i+j+1; for(int i=0;i<n;i++) { for(int j=0;j<m;j++) cout << a[i][j] << " "; cout << endl; } return 0; }
  9. Example 5: Result  Sample Input 5 4  Sample

    Output 1 2 3 4 2 3 4 5 3 4 5 6 4 5 6 7 5 6 7 8