21xrx.com
2024-11-22 10:08:40 Friday
登录
文章检索 我的文章 写文章
C++如何输入长度不确定的二维数组
2023-07-04 20:29:39 深夜i     --     --
C++ 输入 二维数组 长度 不确定

在C++中,二维数组是由多个一维数组组成的数组。输入长度不确定的二维数组需要使用动态内存分配。下面介绍两种常用的方法。

方法一:使用vector容器

vector是C++ STL库中的一个容器,可以动态分配内存,并且支持随机访问。在使用vector容器输入长度不确定的二维数组时,先输入数组的行数和列数,然后使用嵌套的vector容器构造二维数组。代码如下:


#include <iostream>

#include <vector>

using namespace std;

int main()

{

  int rows, cols;

  cout << "请输入二维数组的行数和列数:";

  cin >> rows >> cols;

  vector<vector<int>> a(rows, vector<int>(cols)); // 构造二维数组

  cout << "请输入二维数组的元素值:" << endl;

  for (int i = 0; i < rows; i++)

  {

    for (int j = 0; j < cols; j++)

    {

      cin >> a[i][j];

    }

  }

  cout << "二维数组的值为:" << endl;

  for (int i = 0; i < rows; i++)

  {

    for (int j = 0; j < cols; j++)

    {

      cout << a[i][j] << " ";

    }

    cout << endl;

  }

  return 0;

}

方法二:使用动态数组

动态数组是使用new运算符动态分配内存的数组。在使用动态数组输入长度不确定的二维数组时,先输入数组的行数和列数,然后使用指针数组和循环分别分配每个一维数组的内存。代码如下:


#include <iostream>

using namespace std;

int main()

{

  int rows, cols;

  cout << "请输入二维数组的行数和列数:";

  cin >> rows >> cols;

  // 分配指针数组的内存

  int **a = new int *[rows];

  for (int i = 0; i < rows; i++)

  {

    // 分配每个一维数组的内存

    a[i] = new int[cols];

  }

  cout << "请输入二维数组的元素值:" << endl;

  for (int i = 0; i < rows; i++)

  {

    for (int j = 0; j < cols; j++)

    {

      cin >> a[i][j];

    }

  }

  cout << "二维数组的值为:" << endl;

  for (int i = 0; i < rows; i++)

  {

    for (int j = 0; j < cols; j++)

    {

      cout << a[i][j] << " ";

    }

    cout << endl;

  }

  // 释放内存

  for (int i = 0; i < rows; i++)

  {

    delete[] a[i];

  }

  delete[] a;

  return 0;

}

无论使用哪种方法,输入和输出二维数组的方式都相同。但是,使用vector容器的方法在内存管理方面更加简单和安全,而使用动态数组的方法更加灵活。需要根据实际需求选择合适的方法。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复