将两个vector <double>转换为vector <complex <double>&gt; </complex <double> </double>

时间:2013-05-02 09:40:14

标签: c++ visual-c++

我有两个double类型的向量,我想将它们组合成一个复杂的向量。

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

如何将上述两者结合起来

vector<complex<double>> vComp;

有人可以帮我解决这个问题吗?

非常感谢。

最好的问候

Chintan

4 个答案:

答案 0 :(得分: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); });

答案 1 :(得分:2)

使用std::transform,提供合适的BinaryOperation

答案 2 :(得分:1)

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

或者我错过了什么?

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

答案 3 :(得分: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);