2013-05-02 151 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

相關問題