2013-05-02 154 views
0

我有两个类型为double的矢量,我想将它们组合起来形成一个复数矢量。将两个矢量<double>转换成矢量<complex <double>>

vector<double> vReal; 
vector<double> vImag; 

如何合并上述两个获得

vector<complex<double>> vComp; 

有人可以帮我我该怎么做呢?

很多谢谢。

问候

Chintan

回答

1
for(int i = 0; i < vReal.size(); ++i) { 
    complex<double> iNum(vReal[i], vImag[i]); 
    vComp.push_back(iNum); 
} 

还是我失去了一些东西?

也许还有一个检查,以确保vReal和vImag是相同的大小,否则你会崩溃。

+0

没有支持,我更喜欢这个答案简单。你也可以取消暂时的。 – GuyRT 2013-05-02 10:47:33

3
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); }); 
+0

感谢您的回复和代码,真的很感激。有效。 – 2013-05-02 09:55:36

1

如果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); 
+0

感谢您的回复和代码,非常感谢。 – 2013-05-02 09:54:05

+0

@chintans很高兴它帮助:) – stardust 2013-05-02 09:55:50

相关问题