std::complex
来自cppreference.com
                    
                                        
                    
                    
                                                            
                    |   定义于头文件  <complex>
  | 
||
|   template< class T > class complex;  | 
(1) | |
|   template<> class complex<float>;  | 
(2) | |
|   template<> class complex<double>;  | 
(3) | |
|   template<> class complex<long double>;  | 
(4) | |
模板特化 std::complex<float> 、 std::complex<double> 及 std::complex<long double> 是表示并计算复数的字面类型 (LiteralType) 。
对任何其他类型,实例化模板 complex 的效果是不确定的。
成员类型
| 成员类型 | 定义 | 
  value_type
 | 
  T
 | 
成员函数
|   构造一个复数  (公开成员函数)  | |
|   赋值内容  (公开成员函数)  | |
|   访问复数的实部  (公开成员函数)  | |
|    访问复数的虚部   (公开成员函数)  | |
|   两个复数,或一个复数与一个标量的复合赋值  (公开成员函数)  | 
非成员函数
|   对复数运用一元运算符  (函数模板)  | |
|   在两个复数,或一个复数与一个标量上进行复数算术运算  (函数模板)  | |
|    (C++20 中移除)  | 
  比较两个复数,或一个复数与一个标量   (函数模板)  | 
|   复数的序列化和反序列化  (函数模板)  | |
|   返回实部  (函数模板)  | |
|   返回虚部  (函数模板)  | |
|   返回复数的模  (函数模板)  | |
|   返回辐角  (函数模板)  | |
|   返回模(范数)的平方  (函数模板)  | |
|   返回复共轭  (函数模板)  | |
|    (C++11)  | 
  返回到黎曼球上的投影  (函数模板)  | 
|   从模和辐角构造复数  (函数模板)  | |
 指数函数 | |
|    以 e 为底复数的指数   (函数模板)  | |
|   沿负实轴切割的复自然对数  (函数模板)  | |
|   沿负实轴分割的复常用对数  (函数模板)  | |
 幂函数 | |
|   复数幂,一或两个参数可为复数  (函数模板)  | |
|   右半平面范围中的复平方根  (函数模板)  | |
 三角函数 | |
|   计算复数的正弦( sin(z) )  (函数模板)  | |
|   计算复数的余弦( cos(z) )  (函数模板)  | |
|   计算复数的正切( tan(z) )  (函数模板)  | |
|    (C++11)  | 
  计算复数的反正弦( arcsin(z) )  (函数模板)  | 
|    (C++11)  | 
  计算复数的反余弦( arccos(z) )  (函数模板)  | 
|    (C++11)  | 
  计算复数的反正切( arctan(z) )  (函数模板)  | 
 双曲函数 | |
|   计算复数的双曲正弦( sinh(z) )  (函数模板)  | |
|   计算复数的双曲余弦( cosh(z) )  (函数模板)  | |
|   计算复数的双曲正切( tanh(z) )  (函数模板)  | |
|    (C++11)  | 
  计算复数的反双曲正弦( arsinh(z) )  (函数模板)  | 
|    (C++11)  | 
  计算复数的反双曲余弦( arcosh(z) )  (函数模板)  | 
|    (C++11)  | 
  计算复数的反双曲正切( artanh(z) )  (函数模板)  | 
通过数组访问
| 
 对于任何  对于任何名为  此要求的目的是 C++ 复数类型与 C 语言复数类型(及其数组)的二进制兼容性,其中要求相同的对象表示。  | 
(C++11 起) | 
实现注解
| 
 为满足数组访问的要求,实现需满足在单独且相邻的内存位置存储  
 实现不能添加会占用与实部和虚部冲突的存储的非静态数据成员,而且必须确保类模板特化不含任何填充。实现也必须确保对数组访问的优化问题,其中要考虑到指向 value_type 的指针可能为   | 
(C++11 起) | 
字面量
|   定义于内联命名空间  
std::literals::complex_literals | |
|   表示纯虚数的 std::complex 字面量  (函数)  | |
示例
运行此代码
#include <iostream> #include <iomanip> #include <complex> #include <cmath> int main() { using namespace std::complex_literals; std::cout << std::fixed << std::setprecision(1); std::complex<double> z1 = 1i * 1i; // 虚数单位平方 std::cout << "i * i = " << z1 << '\n'; std::complex<double> z2 = std::pow(1i, 2); // 虚数单位平方 std::cout << "pow(i, 2) = " << z2 << '\n'; double PI = std::acos(-1); std::complex<double> z3 = std::exp(1i * PI); // 欧拉方程 std::cout << "exp(i * pi) = " << z3 << '\n'; std::complex<double> z4 = 1. + 2i, z5 = 1. - 2i; // 共轭 std::cout << "(1+2i)*(1-2i) = " << z4 * z5 << '\n'; }
输出:
i * i = (-1.0,0.0) pow(i, 2) = (-1.0,0.0) exp(i * pi) = (-1.0,0.0) (1+2i)*(1-2i) = (5.0,0.0)