这可能是一个非常新手的问题。我的工作类(姑且称之为MyClass的)包括以下变量std ::复制动态分配的指针
int nbins;
double * bins; // = new double[nbins+i]
自从我采取一个拷贝构造函数
MyClass(const MyClass& source)
我需要复制source.bins
。我打算使用algorithm
中的std::copy
,但我找到的所有示例均显示如何复制静态数组(如double bins[] = ...
)或标准数据结构(如std::vector
)。在double * bins = new double[nbins+i]
等指针中找不到std::copy
的任何示例。所以,我的问题是:是合法的指针上使用std::copy
,例如像
double * bins = new double[nbins+1]; //is this necessary?
std::copy(std::begin(source.bins), std::end(source.bins), std::begin(bins));
或者我应该颇为倚重于C memcpy
double * bins = new double[nbins+1]; //again, is this necessary?
memcpy(source.bins, bins, (nbins+1) /* *sizeof(double) ?*/);
所以,我的问题基本上有两种:
1)std::end(bins)
知道bins (=new double[nbins+1])
的结尾在哪里?
2)在复制之前是否需要为目标分配内存?或copy
(或memcpy
)照顾?
您可能希望使用'std :: vector'代替。 –
milleniumbug
我希望我可以使用矢量:)但我工作的框架不接受矢量。是的,我可以使用vector :: data()嘟m ... – Blackphoenix