C++ 转换两个向量<;双倍>;形成向量<;复杂<;双倍>&燃气轮机;
我有两个double类型的向量,我想把它们组合成一个复数向量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
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很高兴它起到了作用:)为了简单起见,我更喜欢这个答案。你也可以取消临时的。