C++ 中的复杂常量 i?

use*_*866 1 c++ std complex-numbers c++14

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

double a, b;
...
std::complex<double> z = a + b * std::complex<double>(0, 1);
Run Code Online (Sandbox Code Playgroud)

我更愿意写这样的东西:

std::complex<double> z = a + b * i;
Run Code Online (Sandbox Code Playgroud)

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

std::complex<double> z = a + b * I; // does not compile
Run Code Online (Sandbox Code Playgroud)

当然,我可以为此目的定义一些常量,但该常量必须已经存在于 C++ 中。这叫什么?

dra*_*nik 6

自定义文字i(例如1i),参见https://en.cppreference.com/w/cpp/numeric/complex 中的示例

#include <complex>
using namespace std::complex_literals;
std::complex<double> z1 = 1i * 1i;
Run Code Online (Sandbox Code Playgroud)