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

Posted

技术标签:

【中文标题】在 C++ 中初始化复数数组【英文标题】:Initializing complex number array in C++ 【发布时间】:2014-08-22 18:54:07 【问题描述】:

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

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.. 有人可以解释我如何解决这个问题吗?

谢谢

【问题讨论】:

我不是 100% 确定,但我认为 std::vector 在这种情况下会是更好的选择! 【参考方案1】:

因为你使用了逗号操作符,所以复杂值会分别用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);

【讨论】:

没有。它不适合我。我收到以下编译器错误。错误 C2552:“Uf”:无法使用初始化列表 1>“std::complex”初始化非聚合:具有基数的类型不聚合【参考方案2】:

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

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

【讨论】:

以上是关于在 C++ 中初始化复数数组的主要内容,如果未能解决你的问题,请参考以下文章

C++重载实现m*n*k三维矩阵,且矩阵元素为复数

在 C++ 和 Fortran 代码之间传递复数数组

如何在 C++ 中初始化 3D 数组

我不知道为啥我不能在 C++ 中初始化一个数组的数组

在 C++ 中初始化类变量浮点数组

在 C++ 类中初始化二维数组