我有两个类型为double的矢量,我想将它们组合起来形成一个复数矢量。将两个矢量<double>转换成矢量<complex <double>>
vector<double> vReal;
vector<double> vImag;
如何合并上述两个获得
vector<complex<double>> vComp;
有人可以帮我我该怎么做呢?
很多谢谢。
问候
Chintan
我有两个类型为double的矢量,我想将它们组合起来形成一个复数矢量。将两个矢量<double>转换成矢量<complex <double>>
vector<double> vReal;
vector<double> vImag;
如何合并上述两个获得
vector<complex<double>> vComp;
有人可以帮我我该怎么做呢?
很多谢谢。
问候
Chintan
for(int i = 0; i < vReal.size(); ++i) {
complex<double> iNum(vReal[i], vImag[i]);
vComp.push_back(iNum);
}
还是我失去了一些东西?
也许还有一个检查,以确保vReal和vImag是相同的大小,否则你会崩溃。
使用std::transform,提供合适的BinaryOperation
。
vComp.reserve(vReal.size());
std::transform(
begin(vReal), end(vReal), begin(vImag),
std::back_inserter(vComp),
[](double r, double i) { return std::complex<double>(r, i); });
感谢您的回复和代码,真的很感激。有效。 – 2013-05-02 09:55:36
如果C++ 11
std::complex<double> make_complex(double re, double im) {
return std::complex<double>(re,im);
}
std::transform(vReal.begin(), vReal.end(), vImag.begin(), std::back_inserter(vComp), make_complex);
感谢您的回复和代码,非常感谢。 – 2013-05-02 09:54:05
@chintans很高兴它帮助:) – stardust 2013-05-02 09:55:50
没有支持,我更喜欢这个答案简单。你也可以取消暂时的。 – GuyRT 2013-05-02 10:47:33