引入:
用C++实现二维不等长数组,大部分教程给的方法是使用STL中的vector,但使用容器只是使用已经包装好的函数而已。
也有些教程利用二级指针(int **pointer)new出二维不定长数组,实现了不定长输入,但是没有给出动态二维不定长数组的遍历方法。因为是基于指针,所以不能用sizeof分别计算某一行的长度。
所以我想到一个解决方法,每次输入某行的不确定元素数时,利用一个数组把这个数值保存下来,遍历的时候再直接拿来使用。(int[m][n]中的n)
下面给出代码:
#include<iostream>
using namespace std;
int main()
{
int m = 0;
int j = 0;
int array[10];
cout << "请输入行数" << endl;
cin >> m;
int **a = new int*[m];
for (int i = 0; i < m; i++)
{
int n = 0;
cout << "请输入该行元素个数---->" << endl;
cin >> n;
a[i] = new int[n];
cout << "请输入元素---->\t应输入" << n << "个元素"<< endl;
for (int k = 0; k < n; k++)
{
cin >> a[i][k];
}
array[j] = n;
j++;
}
cout << "动态二维数组遍历实现----->" << endl;
for (int i = 0; i < m; i++)
{
for (int k = 0; k < array[i]; k++)
{
cout << a[i][k] << "\t\t";
}
cout << endl;
}
system("pause");
return 0;
}
其实没太多东西,核心方案就是引入了一个数组去记录每行输入的不定长元素的个数。