在C ++中初始化复数数组

时间:2014-08-22 18:54:07

标签: c++ visual-c++ complex-numbers

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

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

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

由于

2 个答案:

答案 0 :(得分:8)

这是因为您正在使用逗号运算符,因此复杂值将分别使用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)};

答案 1 :(得分:3)

您正在初始化数组错误。试试这个:

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