【问题标题】:Initializing complex number array in C++在 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 在这种情况下会是更好的选择!

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


【解决方案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}};

【讨论】:

    猜你喜欢
    • 2010-12-18
    • 2023-03-13
    • 2013-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-02
    • 1970-01-01
    相关资源
    最近更新 更多