這可能是一個非常新手的問題。我的工作類(姑且稱之爲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