13. 通用二维数组制造函数

题目:

 为程序make_2d_array 编写一个通用型算法,它的第三个参数不是整数 col_number,而是一维数组row_size。它创建一个二维数组,第 i 行的列数是 row_size [ i ]。

思路:

本题需要改变的是列数,也就是说,每行的元素个数可以不同,把这些元素个数存储在数组 row_size 中。其余不需要改变。

代码:

 1 #include <iostream>
 2 using namespace std;
 3 
 4 template <typename T>
 5 void make_2d_array (T** &x, int row_number, const int* row_size) {
 6     x = new T* [row_number];
 7 
 8     for (int i = 0; i < row_number; ++i) {
 9         x[i] = new T [row_size[i]];
10     }
11 }
12 
13 int main() {
14     int** x;
15     cout << "Enter row : ";
16     int row_number;
17     cin >> row_number;
18     int row_size[row_number];
19 
20     for (int i = 0; i < row_number; ++i) {
21         cout << "Enter row " << i << " size : ";
22         cin >> row_size[i];
23     }
24 
25     make_2d_array(x, row_number, row_size);
26 
27     for (int i = 0; i < row_number; ++i) {
28         for (int j = 0; j < row_size[i]; ++j) {
29             cout << "Enter [" << i << "][" << j << "] : ";
30             cin >> x[i][j];
31         }
32     }
33 
34     for (int i = 0; i < row_number; ++i) {
35         for (int j = 0; j < row_size[i]; ++j) {
36             cout << x[i][j] << " ";
37         }
38         cout << endl;
39     }
40 
41     return 0;
42 }
原文地址:https://www.cnblogs.com/Hello-Nolan/p/12307434.html