多维数组赋值

时间:2012-03-15 14:54:43

标签: c++ multidimensional-array

如果你看这个课程,我该如何实现以下目标:

class foo {

public:

  void foo(double (&arr)[3][4]) { //Constructor
    arr2 = arr; //??? How to assign multidimensional arrays?
  }

  void bar() { //Usage
    double doSomething = arr2[1][0];
  }

private:
  double* arr2[3][4]; //??? How to store this?
}

谢谢大家!

更多解释:这应该是一个类,它在构造函数(foo())中获得对二维数组的引用。它将此引用存储在成员变量中,以便其他一些函数(bar())可以在以后访问它们。

那么“format”具有成员变量以及如何为其分配构造函数的参数?

Edit2:当我要求界面时,我无法更改签名以使用std :: vector> ...

2 个答案:

答案 0 :(得分:2)

class foo {
public:
  // See http://cdecl.ridiculousfish.com/?q=double+%28%26arr%29%5B3%5D%5B4%5D
  foo(double (&arr)[3][4]) :arr2(&arr) {
    // This constructor uses constructor list initialization, but you could have used
    // assignment instead, like this:
    // arr2 = &arr;
  }
  double bar() { //Usage
    double doSomething = (*arr2)[1][0];
    return doSomething*doSomething;
  }
private:
  // See http://cdecl.ridiculousfish.com/?q=double+%28*arr2%29%5B3%5D%5B4%5D
  double (*arr2)[3][4];
};

int main () {
  double oof[3][4] = {{0.,},};
  foo moo(oof);
  return int(moo.bar());
}

答案 1 :(得分:1)

由于您未指定使用原始指针的原因且标记为C++,因此您应使用嵌套的vectors代替:

#include <vector>

class foo
{
public:

  void foo(const std::vector<std::vector<double>>& arr)
     : arr2(arr)
  { //Constructor
  }

  void bar() { //Usage
    double doSomething = arr2[1][0];
  }

private:
  std::vector<std::vector<double>> arr2;
};