我有一个类“foo”的具有多维阵列和需要通过部件的getArray以提供阵列的副本传递多维数组回来。有没有一种很好的方式来做这件事,当数组动态创建,所以我不能将数组传回一个常量,因为数组总是被删除,重新创建等。我想创建一个新的动态数组传递回来,但是这是可接受的,调用代码将需要知道来删除等通过访问成员
Q
通过访问成员
1
A
回答
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
简单回答你的问题,不是这不是一个好的设计,因为它应该是创建类应该处理阵列的删除/释放。
主要的一点是,为什么你一直删除/重新创建这个多维数组?你是否可以不创建一个实例,然后在需要时进行修改?
个人而言,我会返回数组,因为它是,并且迭代它,因此是没有创建/删除阵列节约资源的循环中做的任何计算/功能。
0
尼尔也许是最好的答案。第二好的将不会使用数组。在C++中,当你谈论动态数组时,这意味着vector
。
有两种可能性:
- 嵌套载体:
std::vector<int, std::vector<int> >(10, std::vector<int>(20))
- 简单向量:
std::vector<int>(200)
两者都会有200
项目。第一个显然是多维的,而第二个则让您有计算偏移的任务。
第二个要求更多的工作,但由于单个大块代替分配的指向十级中的人一个小块更表演内存明智...
但正如尼尔说,适当的类你自己去定义操作的精确设定好:)
相关问题
- 1. 通过指针访问成员函数
- 2. 通过地址访问结构成员
- 3. 通过System.Reflection访问内部成员?
- 4. 通过对象访问成员函数
- 5. 通过字符串访问JSON成员?
- 6. 通过引用访问者访问私有成员
- 7. 通过外部访问静态成员并通过继承C++
- 8. 访问成员
- 9. 访问成员
- 10. 访问成员
- 11. 过载 - >运营商通过代理转发成员访问
- 12. 访问通用类型的成员
- 13. 访问AppConfig成员
- 14. 访问类成员
- 15. 访问类成员
- 16. 访问静态成员静态成员
- 17. VB.NET - 通过类型访问共享成员
- 18. 通过公共方法访问私有成员变量
- 19. Spring&JSP:通过关联访问变量成员
- 20. 通过组成员资格的DynamoDB细粒度访问控制
- 21. 通过实例跟踪成员变量访问
- 22. 多态:通过类文字或对象访问静态成员
- 23. 通过NuGet安装InputSimulator,无成员访问
- 24. Java通过受保护的getter访问私有超类成员
- 25. 通过基类指针访问派生类的成员C++
- 26. 如何通过C#中的字符串访问类成员?
- 27. 通过本地静态实例访问实例成员
- 28. Java - 通过反射访问公共成员
- 29. 访问非继承成员,通过基类
- 30. 如何通过指针从函数访问类的成员?
不遵循100%你不介意扩大? – user174084