C++ 中的复常量 i?
Complex constant i in C++?
在编写 C++ 代码时,而不是:
double a, b;
...
std::complex<double> z = a + b * std::complex<double>(0, 1);
我更愿意这样写:
std::complex<double> z = a + b * i;
我可以看到C99有宏I
(https://en.cppreference.com/w/c/numeric/complex/I),但是不能用std::complex
:
std::complex<double> z = a + b * I; // does not compile
当然,我可以为此目的为自己定义一些常量,但该常量必须已经存在于 C++ 中的某处。它叫什么?
自定义文字 i
(例如 1i
),请参阅 https://en.cppreference.com/w/cpp/numeric/complex
中的示例
#include <complex>
using namespace std::complex_literals;
std::complex<double> z1 = 1i * 1i;
自 C++14 起,您可以使用 complex literal ""i
指定(仅)复数的虚部。因此,对于 i 你可以使用 1i
.
在编写 C++ 代码时,而不是:
double a, b;
...
std::complex<double> z = a + b * std::complex<double>(0, 1);
我更愿意这样写:
std::complex<double> z = a + b * i;
我可以看到C99有宏I
(https://en.cppreference.com/w/c/numeric/complex/I),但是不能用std::complex
:
std::complex<double> z = a + b * I; // does not compile
当然,我可以为此目的为自己定义一些常量,但该常量必须已经存在于 C++ 中的某处。它叫什么?
自定义文字 i
(例如 1i
),请参阅 https://en.cppreference.com/w/cpp/numeric/complex
#include <complex>
using namespace std::complex_literals;
std::complex<double> z1 = 1i * 1i;
自 C++14 起,您可以使用 complex literal ""i
指定(仅)复数的虚部。因此,对于 i 你可以使用 1i
.