C++动态生成二维数组模板,设置列数和设置一行各有几列
本人自学党,刚刚从别的语言入坑,如有不好的地方望指正,通过从书本中学习到动态创建一维数组需要
int* x;
x= new int[];
于是动态二维数组就可以得出模板
template <class T>
void make1dArray(T ** &x,int numberOfRows,int numberOfColumns)
{
x= new T * [numberOfRows];
for(int i = 0; i < numberOfRows;i++)
{
x[i] = new T [ numberOfColumns];
}
}
那么如果在定义每行有多少列的时候,定义的是一个一维数组,那就可以实现设置行数和每行各自有多少页啦。
template<class T>
void make2dArray(T**& x, int NumberofRows, T rowSize[])
{
x = new T * [NumberofRows];
for (int i = 0; i < NumberofRows; i++)
{
x[i] = new T[rowSize[i]];
}
}
最后放在main里面运行,展示全部代码:
#include <iostream>
using namespace std;
template<class T>
void make2dArray(T**& x, int NumberofRows, T rowSize[])
{
x = new T * [NumberofRows];
for (int i = 0; i < NumberofRows; i++)
{
x[i] = new T[rowSize[i]];
}
}
int main()
{
int** x;
int NumberofRows;
cout << "Please scan number:"<< endl;
cin >> NumberofRows;
int* rowSize;
rowSize = new int[NumberofRows];
for (int i = 0; i < NumberofRows; i++)
{
cin>> rowSize[i];
}
make2dArray(x, NumberofRows, rowSize);
cout<<"Please scan Number"<<endl;
for (int i = 0; i < NumberofRows; i++)
for (int j = 0; j < rowSize[i]; j++)
{
cin >> x[i][j];
}
for (int i = 0; i < NumberofRows; i++)
for (int j = 0; j < rowSize[i]; j++)
{
cout << "x:" << x[i][j] << endl;
}
return 0;
}
感觉学习c++还是很有趣的。