我需要创建一个由复数组成的数组。我使用以下代码对其进行初始化。
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
..有人可以解释一下如何解决这个问题吗?
由于
答案 0 :(得分:8)
这是因为您正在使用逗号运算符,因此复杂值将分别使用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)};
答案 1 :(得分:3)
您正在初始化数组错误。试试这个:
std::complex<double> Uf[2]={{1, 2},{3, 4}};