我需要创建一个包含复数的数组。我使用以下代码对其进行了初始化。
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
..。有人可以解释一下如何解决此问题吗?谢谢
最佳答案
这是因为您使用的是逗号运算符,因此将分别使用2
和4
初始化复杂值。用大括号代替括号:
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)};