C++中的复常数 i?

Complex constant i in C++?

提问人:user1387866 提问时间:7/30/2021 最后编辑:Zoe is on strikeuser1387866 更新时间:7/30/2021 访问量:429

问:

编写 C++ 代码时,而不是:

double a, b;
...
std::complex<double> z = a + b * std::complex<double>(0, 1);

我更愿意写这样的东西:

std::complex<double> z = a + b * i;

我可以看到 C99 有宏 (https://en.cppreference.com/w/c/numeric/complex/I),但它不能用于:Istd::complex

std::complex<double> z = a + b * I; // does not compile

当然,我可以为此目的给自己定义一些常量,但这个常量必须存在于C++的某个地方。它叫什么?

C++ C++14 标准 复数

评论

1赞 phuclv 7/30/2021
@KamilCuk你不能那样做。C++ 不支持 C 的类型,而是使用_Complexstd::complex

答:

8赞 user14215102 7/30/2021 #1

自定义文本(例如),请参阅 https://en.cppreference.com/w/cpp/numeric/complex 中的示例i1i

#include <complex>
using namespace std::complex_literals;
std::complex<double> z1 = 1i * 1i;
3赞 Adrian Mole 7/30/2021 #2

从 C++14 开始,您可以使用复数文本 “”i 来指定(仅)复数的虚部。因此,对于 i,您可以使用 .1i