引入:
用C++实现二维不等长数组,大部分教程给的方法是使用STL中的vector,但使用容器只是使用已经包装好的函数而已。 也有些教程利用二级指针(int **pointer)new出二维不定长数组,实现了不定长输入,但是没有给出动态二维不定长数组的遍历方法。因为是基于指针,所以不能用sizeof分别计算某一行的长度。 所以我想到一个解决方法:每次输入某行的不确定元素数时,利用一个数组把这个数值保存下来,遍历的时候再直接拿来使用。(int[m][n]中的n)
下面给出代码:1 #include2 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 }
核心方案是引入了一个数组去记录每行输入的不定长元素的个数。
遇到实际问题时,可以参考给出的代码封装使用。