我有两个double类型的向量,我想将它们组合成一个复杂的向量。
vector<double> vReal;
vector<double> vImag;
如何将上述两者结合起来
vector<complex<double>> vComp;
有人可以帮我解决这个问题吗?
非常感谢。
最好的问候
Chintan
答案 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);