【问题标题】:C++ fill 2D array [duplicate]C ++填充二维数组[重复]
【发布时间】:2014-12-23 02:13:00
【问题描述】:

我是 Java 程序员。我正在尝试在 Win32 项目中填充数组

int **Data::matrixInitialize()
{
    int** MX = new int*[n];
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < n; j++)
        {
            MX[i][j] = 1;
        }
    }
    return MX;
}

但是这段代码抛出了异常。请帮我填充二维数组。

【问题讨论】:

  • 你遇到了什么异常?
  • 一定要用数组吗?我强烈建议使用vector&lt;vector&lt;int&gt;&gt; 或至少array&lt;array&lt;int&gt;&gt; 而不是原始数组。
  • 你的 new 只创建一个指针数组。您仍然需要自己分配整数(更多新)。最好还是使用矢量。

标签: c++


【解决方案1】:

您错过了分配:

int **Data::matrixInitialize()
{
    int** MX = new int*[n];
    for (int i = 0; i < n; i++)
    {
        MX[i] = new int[n]; // Missing line
        for (int j = 0; j < n; j++)
        {
            MX[i][j] = 1;
        }
    }
    return MX;
}

但最好使用std::vectorstd::array

【讨论】:

    【解决方案2】:

    试试下面的

    #include <algorithm>
    
    //...
    
    int **Data::matrixInitialize()
    {
        int** MX = new int*[n];
    
        for ( int i = 0; i < n; i++ )
        {
            MX[i] = new int[n];
            std::fill_n( MX[i], n, 1 );
        }
    
        return MX;
    }
    

    【讨论】:

      猜你喜欢
      • 2018-05-07
      • 2019-02-26
      • 2016-05-27
      • 2017-06-22
      • 2020-02-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多