我有兩個類型爲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