共计 1388 个字符,预计需要花费 4 分钟才能阅读完成。
本文基于《数据结构、算法与利用 C++ 语言形容》一书。
创立二维数组
template<class T>
void make2dArray(T ** &a, int numberOfRows, int numberOfColumns)
{
// 创立行指针
a = new T * [numberOfRows];
// 为每一行调配空间
for(int i = 0; i < numberOfRows; i++)
a[i] = new T[numberOfColumns];
}
删除二维数组
template<class T>
void delete2dArray(T ** &a, int numberOfRows)
{
// 删除行数组空间
for(int i = 0; i < numberOfRows; i++)
delete [] a[i];
// 删除行指针
delete [] a;
a = NULL;
}
残缺代码
#include <iostream>
using namespace std;
/*
创立二维数组
*/
template<class T>
void make2dArray(T ** &a, int numberOfRows, int numberOfColumns)
{
// 创立行指针
a = new T * [numberOfRows];
// 为每一行调配空间
for(int i = 0; i < numberOfRows; i++)
a[i] = new T[numberOfColumns];
}
/*
删除二维数组
*/
template<class T>
void delete2dArray(T ** &a, int numberOfRows)
{
// 删除行数组空间
for(int i = 0; i < numberOfRows; i++)
delete [] a[i];
// 删除行指针
delete [] a;
a = NULL;
}
/*
初始化数组为全 0
*/
template<class T>
void initArray(T ** &a, int numberOfRows, int numberOfColumns)
{for(int i = 0; i < numberOfRows; i++)
for(int j = 0; j < numberOfColumns; j++)
a[i][j] = 0;
}
/*
打印数组内容
*/
template<class T>
void printArray(T ** &a, int numberOfRows, int numberOfColumns)
{for(int i = 0; i < numberOfRows; i++) {for(int j = 0; j < numberOfColumns; j++)
cout << a[i][j] << " ";
cout << "\n";
}
}
int main()
{
int **a;
try {
int rows, columns;
rows = 3;
columns = 4;
make2dArray(a, rows, columns);
initArray(a, rows, columns);
a[1][2] = 1;
printArray(a, rows, columns);
delete2dArray(a, rows);
} catch(bad_alloc &e) {
cerr << "Could not create two-dimensional array a\n";
cerr << "bad_alloc capture:" << e.what() << "\n";}
system("pause");
return 0;
}
后果
0 0 0 0
0 0 1 0
0 0 0 0
参考列表
- 《数据结构、算法与利用 C++ 语言形容》P11, 12
正文完