【发布时间】:2013-05-01 14:29:19
【问题描述】:
假设我有以下类,基本上是一个普通的数组包装器:
template<class T>
SimpleArray {
T * array;
SimpleArray(): T(NULL) {}
SimpleArray(T * array_) {
// what goes here?
}
// TODO: copy constructor and copy assignment
~SimpleArray() {
delete[] array;
}
};
如何将元素从一个数组复制到另一个数组?如果它是一个简单的类型,我可以使用memcpy 之类的东西,它会工作得很好。但是如果T 是一个需要深度复制的复杂类型呢?例如,如果 T 有一个成员数组,那么浅拷贝它会创建多个指向同一资源的 T 对象,这是一场灾难。
基本上,我需要某种方法来创建数组的深层副本。有什么建议吗?
我知道我可以使用标准库中的一些东西,但我不这样做是有原因的。 SimpleArray 旨在以T* 的形式轻松访问我的对象的内部存储。就我而言,没有任何 STL 容器支持这样的功能。
【问题讨论】:
-
嗯,首先你需要知道
array_的大小,然后才能做任何事情...... -
@nikhil 哦,确实,看起来很像。谢谢!我想,我的搜索不太好。
-
std::vector 以
T*的形式为您提供访问权限。见cplusplus.com/reference/vector/vector/data