【问题标题】:How to pass multidimensional dynamic arrays to function in c++如何将多维动态数组传递给C++中的函数
【发布时间】:2012-12-17 17:19:18
【问题描述】:

我已经创建了一个这样的多维动态数组

int N;
cin >> N;
bool ** hap = new bool*[N];

for(int i = 0; i < N; i++)
hap[i] = new bool[N];

而且它似乎工作正常,但我需要将此数组传递给函数...

我应该怎么做?

谢谢

【问题讨论】:

    标签: c++ function multidimensional-array


    【解决方案1】:

    完全按照您声明的方式传递它;作为布尔**。这是一个示例定义:

    void myFunc(bool** param)
    {
        // Do stuff with param here, indexing it normally
    }
    

    然后你可以像这样调用函数:

    myFunc(hap);
    

    【讨论】:

      【解决方案2】:

      本质上,the same as for returning a multi-dimensional array applies

      1. 此处不要使用指针和原始内存管理。
      2. 通过 (const) 引用传递表示数组的对象:
      void f(matrix_2d const& mat) {
          // do something.
      }
      
      matrix_2d mat = { {1, 2}, {3, 4} };
      f(mat);
      

      对于matrix_2d 的适当定义——例如:

      using matrix_2d = std::vector<std::vector<int>>;
      

      (此代码需要C++11,但之前的原则同样适用。)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-01-15
        • 1970-01-01
        • 2014-11-19
        • 2014-03-16
        • 2011-09-27
        • 1970-01-01
        • 2011-08-16
        相关资源
        最近更新 更多