2010-02-22 84 views
1

我有一个类“foo”的具有多维阵列和需要通过部件的getArray以提供阵列的副本传递多维数组回来。有没有一种很好的方式来做这件事,当数组动态创建,所以我不能将数组传回一个常量,因为数组总是被删除,重新创建等。我想创建一个新的动态数组传递回来,但是这是可接受的,调用代码将需要知道来删除等通过访问成员

回答

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; 
    } 
}; 
+0

不遵循100%你不介意扩大? – user174084

0

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

主要的一点是,为什么你一直删除/重新创建这个多维数组?你是否可以不创建一个实例,然后在需要时进行修改?

个人而言,我会返回数组,因为它是,并且迭代它,因此是没有创建/删除阵列节约资源的循环中做的任何计算/功能。

0

尼尔也许是最好的答案。第二好的将不会使用数组。在C++中,当你谈论动态数组时,这意味着vector

有两种可能性:

  1. 嵌套载体:std::vector<int, std::vector<int> >(10, std::vector<int>(20))
  2. 简单向量:std::vector<int>(200)

两者都会有200项目。第一个显然是多维的,而第二个则让您有计算偏移的任务。

第二个要求更多的工作,但由于单个大块代替分配的指向十级中的人一个小块更表演内存明智...

但正如尼尔说,适当的类你自己去定义操作的精确设定好:)