0

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

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

我如何结合以上两个得到

vector<complex<double>> vComp;

有人可以帮我怎么做吗?

非常感谢。

此致

钦坦

4

4 回答 4

4
    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-02T09:46:18.270 回答
2

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

于 2013-05-02T09:45:07.987 回答
1
for(int i = 0; i < vReal.size(); ++i) {
  complex<double> iNum(vReal[i], vImag[i]);
  vComp.push_back(iNum);
}

还是我错过了什么?

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

于 2013-05-02T09:43:50.787 回答
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);
于 2013-05-02T09:49:36.253 回答