2

假设我有以下类,基本上是一个普通的数组包装器:

 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 容器支持这样的功能。

4

1 回答 1

1

滚动您自己的动态数组是不可取的。如果您只需要通过 T* 访问底层数据,那么您可以使用vec.data()(仅限 c++11)或 &vec.front()。

于 2014-01-01T04:02:32.620 回答