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


    引入:
    用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 << "请输入元素---->	应输入" << 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] << "		";
    34         }
    35         cout << endl;
    36     }
    37 
    38 
    39     system("pause");
    40     return 0;
    41 }

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

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

  • 相关阅读:
    Javascript面向对象(三):非构造函数的继承
    Javascript面向对象(二):构造函数的继承
    Javascript 面向对象(一):封装
    .NET面试题系列[12]
    .NET面试题系列[11]
    .NET面试题系列[10]
    .NET面试题系列[9]
    .NET面试题系列[8]
    .NET面试题系列[7]
    .NET面试题系列[6]
  • 原文地址:https://www.cnblogs.com/wonker/p/10331138.html
Copyright © 2020-2023  润新知