C++ 转换两个向量<;双倍>;形成向量<;复杂<;双倍>&燃气轮机;

C++ 转换两个向量<;双倍>;形成向量<;复杂<;双倍>&燃气轮机;,c++,visual-c++,C++,Visual C++,我有两个double类型的向量,我想把它们组合成一个复数向量 vector<double> vReal; vector<double> vImag; vectorvreal; 载体vImag; 如何将以上两种方法结合起来以获得 vector<complex<double>> vComp; 向量vComp; 谁能帮帮我怎么做 非常感谢 致意 Chintan用于(int i=0;i

我有两个double类型的向量,我想把它们组合成一个复数向量

vector<double> vReal;
vector<double> vImag;
vectorvreal;
载体vImag;
如何将以上两种方法结合起来以获得

vector<complex<double>> vComp;
向量vComp;
谁能帮帮我怎么做

非常感谢

致意

Chintan

用于(int i=0;ifor(int i = 0; i < vReal.size(); ++i) {
  complex<double> iNum(vReal[i], vImag[i]);
  vComp.push_back(iNum);
}
复合iNum(vReal[i],vImag[i]); vComp.推回(iNum); } 还是我遗漏了什么

可能还需要检查以确保vReal和vImag的大小相同,否则会崩溃。

使用,提供合适的
二进制操作
vComp.reserve(vReal.size());
    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); });
std::transform( 开始(vReal),结束(vReal),开始(vImag), 标准:背面插入器(vComp), [](双r,双i){return std::complex(r,i);});
如果不支持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);
std::复杂使复杂(双re,双im){
返回std::complex(re,im);
}
std::transform(vReal.begin(),vReal.end(),vImag.begin(),std::back_插入器(vComp),make_complex);

感谢您的回复和代码,非常感谢。它起作用了。@chintans很高兴它起到了作用:)为了简单起见,我更喜欢这个答案。你也可以取消临时的。