通过访问成员传回多维数组

时间:2010-02-22 10:15:27

标签: c++ memory dynamic multidimensional-array getmethod

我有一个类“foo”,它有一个多维数组,需要通过getArray成员提供数组的副本。在动态创建数组时有没有一种很好的方法可以执行此操作,因此我无法将数组传递回const,因为数组总是被删除,重新创建等等。我想创建一个新的动态数组来传回它,但这是可以接受,因为调用代码需要知道删除这个等。

3 个答案:

答案 0 :(得分:3)

返回一个对象,而不是裸阵列。该对象可以有一个复制构造函数,析构函数等,它将为用户进行复制,删除等操作。

class Matrix {
   // handle creation and access to your multidim array
   // including copying, deletion etc.
};

class A {    // your class
   Matrix m;     // the classes matrix
   Matrix getArray() {
       return m;
   }
};

答案 1 :(得分:0)

对你的问题的简单回答是,这不是一个好的设计,因为它应该是应该处理数组删除/释放的创建类。

重点是为什么要继续删除/重新创建这个多维数组?你能不创建一个实例,然后在需要时进行修改?

就个人而言,我会按原样返回数组,然后迭代它并在循环期间对其进行任何计算/函数,从而通过不创建/删除数组来节省资源。

答案 2 :(得分:0)

尼尔可能是最好的答案。第二好的不是使用数组。在C ++中,当你谈到动态数组时,它意味着vector

有两种可能性:

  1. 嵌套向量:std::vector<int, std::vector<int> >(10, std::vector<int>(20))
  2. 简单向量:std::vector<int>(200)
  3. 两者都有200个项目。第一个显然是多维的,而第二个则让你完成计算偏移的任务。

    第二个要求更多的工作,但是更好地执行记忆,因为分配了一个大块而不是一个指向十个中等块的小块...

    但是正如Neil所说,你自己定义一组确切的操作更合适一类:)