我希望了解何时更实用使用std::transform,何时传统的for循环更好。
这是我的for循环代码,我想将两个向量合并成一个复合型向量:
vector<double> vAmplitude = this->amplitudeData(N);
vector<double> vPhase = this->phaseData(N);
vector<complex<double>,fftalloc<complex<double> > > vComplex(N);
for (size_t i = 0; i < N; ++i)
{
vComplex[i] = std::polar(vAmplitude[i], vPhase[i]);
}
这是我的 std::transform 代码
vector<double> vAmplitude = this->amplitudeData(N);
vector<double> vPhase = this->phaseData(N);
vector<complex<double>,fftalloc<complex<double> > > vComplex;
std::transform(
begin(vPhase), end(vPhase), begin(vAmplitude),
std::back_inserter(vComplex),
[](double p, double a) { return std::polar(a, p); });
请注意,vComplex是没有指定大小分配的,所以我想知道分配发生的时间。此外,我不明白为什么在lambda表达式中,p
和a
必须反转使用。