假设我有这个:
const int MAX_BUFFER = 1024;
std::vector<double> AV(MAX_BUFFER);
std::vector<double> CV{ AV };
AV
如何复制到CV
中?
如果我使用double
数组(即double []
)进行相同的操作,它需要更多时间(在MSVC上使用性能分析器和/Oi
测试过):
for (int sampleIndex = 0; sampleIndex < MAX_BUFFER; sampleIndex++) {
C[sampleIndex] = A[sampleIndex];
}
它是如何更快地复制的?我用C++数组标准该怎样做?
std::memcpy
。 - PaulMcKenzievalue_type
。对于POD(普通旧数据)类型,例如double
和int
,最佳性能可能使用std::memcpy
来实现。对于非POD类型(例如std::string
),无法使用std::memcpy
。 - Fureeishstd::vector
构造函数以及std::copy()
通常针对 POD 类型进行特化,内部使用memcpy()
。 - zett42