我需要创建一个包含复数的数组。我使用以下代码对其进行了初始化。

std::complex<double> Uf[2]={(1, 2),(3, 4)};

我期望Uf [0]是1 + 2*i,而Uf[1]3+ 4*i,但是当我调试程序时,我发现虚数值显示为实数,并且两个数字的虚数值都令人惊讶地为零(即Uf[0]是实数:2.0000.. imag: 0.0000 ....和Uf[1]是真实的:4.0000 .. imag:0.0000 ..。有人可以解释一下如何解决此问题吗?

谢谢

最佳答案

这是因为您使用的是逗号运算符,因此将分别使用24初始化复杂值。用大括号代替括号:

std::complex<double> Uf[2]={{1, 2},{3, 4}};

如果上述方法不起作用,则说明您的编译器与C++ 11不兼容,因此您必须显式创建数组复杂成员:
std::complex<double> Uf[2]={std::complex<double>(1, 2),std::complex<double>(3, 4)};

07-24 13:58