基于二级指针实现动态二维数组的不定长输入及遍历

引入:
用C++实现二维不等长数组,大部分教程给的方法是使用STL中的vector,但使用容器只是使用已经包装好的函数而已。
也有些教程利用二级指针(int **pointer)new出二维不定长数组,实现了不定长输入,但是没有给出动态二维不定长数组的遍历方法。因为是基于指针,所以不能用sizeof分别计算某一行的长度。
所以我想到一个解决方法:

每次输入某行的不确定元素数时,利用一个数组把这个数值保存下来,遍历的时候再直接拿来使用。(int[m][n]中的n)
下面给出代码:

 1 #include<iostream>
 2 using namespace std;
 3 
 4 int main()
 5 {
 6     int m = 0;
 7     int j = 0;
 8     int array[10];
 9     cout << "请输入行数" << endl;
10     cin >> m;
11     int **a = new int*[m];
12     for (int i = 0; i < m; i++)
13     {
14         int n = 0;
15         cout << "请输入该行元素个数---->" << endl;
16         cin >> n;
17         a[i] = new int[n];
18         cout << "请输入元素---->\t应输入" << n << "个元素"<< endl;
19         for (int k = 0; k < n; k++)
20         {
21             cin >> a[i][k];
22         }
23         array[j] = n;
24         j++;
25 
26     }
27 
28     cout << "动态二维数组遍历实现----->" << endl;
29     for (int i = 0; i < m; i++)
30     {
31         for (int k = 0; k < array[i]; k++)
32         {
33             cout << a[i][k] << "\t\t";
34         }
35         cout << endl;
36     }
37 
38 
39     system("pause");
40     return 0;
41 }

  核心方案是引入了一个数组去记录每行输入的不定长元素的个数。

  遇到实际问题时,可以参考给出的代码封装使用。

猜你喜欢

转载自www.cnblogs.com/wonker/p/10331138.html