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

sur*_*nga 3 c++ complex-numbers visual-c++

我需要创建一个由复数组成的数组.我使用以下代码初始化它.

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

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

谢谢

Som*_*ude 8

这是因为你正在使用逗号运算符,所以复杂的值将分别用2和初始化4.而是用大括号替换括号:

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

如果上述方法不起作用,则编译器不兼容C++ 11,您必须显式创建数组复杂成员:

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