动态内存分配,创建一个对每一行列数不同(元素个数不同)的二维数组!
上一篇提到了C++中的动态内存机制以及如何动态建立数组,这里给出更具一般性的算法,对一个二维数组,每一行所含元素个数不相同的情况。
#include <bits/stdc++.h> using namespace std; template<class T> bool make2dArray(T ** &arr, int numberOfRows, int arrNumberOfColumns[]) { //创建一个二维数组 try{ //创建行指针 arr = new T * [numberOfRows]; //为每一行分配空间 for(int i = 0; i < numberOfRows; ++i) { for(int j = 0; j < numberOfRows; ++j) arr[i] = new int [arrNumberOfColumns[j]]; } return true; }catch (bad_alloc) { cerr << "Out of memory" << endl; return false; } } int main() { int row; cin >> row; //存储每一列所含元素的个数 int *col = new int[row]; for(int i = 0 ; i < row; ++i) {cin >> col[i];} int **arr; if(make2dArray(arr, row, col)) { for(int i = 0; i < row; ++i){ for(int j = 0; j < col[i]; ++j) { //此处可以自己定义元素从控制台输入 arr[i][j] = i + j; } } } for(int i = 0; i < row; ++i) { for(int j = 0; j < col[i]; ++j) { j ? cout << " " << arr[i][j] : cout << arr[i][j]; } puts(""); } //最终一定不要忘记释放内存!!! delete[] col; for(int i = 0; i < row; ++i) { delete[] arr[i]; } return 0; }
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。
- 上一篇: c++语言 如何计算二维数组行数和列数
- 下一篇: 任意行列二维数组C语言实现