std::complex

来自cppreference.com
< cpp‎ | numeric
定义于头文件 <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

[编辑] 成员函数

构造一个复数
(公开成员函数) [编辑]
为内容赋值
原文:
assigns the contents
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。

(公开成员函数) [编辑]
访问复数的实部
原文:
accesses the real part of the complex number
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。

(公开成员函数) [编辑]
访问复数的虚部
(公开成员函数) [编辑]
两个复数或一个复数的和一个标量的复合赋值
原文:
compound assignment of two complex numbers or a complex and a scalar
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。

(公开成员函数) [编辑]

[编辑] 非成员函数

对复数运用一元运算符
(函数模板) [编辑]
在两个复数或一个复数和一个标量上运用复数算术运算
(函数模板) [编辑]
比较两个复数或一个复数和一个标量
(函数模板) [编辑]
复数的序列化和反序列化
(函数模板) [编辑]
返回实部
原文:
returns the real component
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。

(函数模板) [编辑]
返回虚部
原文:
returns the imaginary component
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。

(函数模板) [编辑]
返回复数的模
原文:
returns the magnitude of a complex number
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。

(函数模板) [编辑]
返回相位角
原文:
returns the phase angle
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。

(函数模板) [编辑]
返回模的平方
原文:
returns the squared magnitude
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。

(函数模板) [编辑]
返回共轭复数
原文:
returns the complex conjugate
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。

(函数模板) [编辑]
(C++11)
返回黎曼球上的投影
原文:
returns the projection onto the Riemann sphere
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。

(函数模板) [编辑]
从模和相位角构造复数
原文:
constructs a complex number from magnitude and phase angle
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。

(函数模板) [编辑]
指数函数
e为底复数的指数
(函数模板) [编辑]
沿负实轴割线的复数的自然对数
原文:
complex natural logarithm with the branch cuts along the negative real axis
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。

(函数模板) [编辑]
沿负实轴割线的复数的常用对数
原文:
complex common logarithm with the branch cuts along the negative real axis
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。

(函数模板) [编辑]
幂函数
复数的幂,两个参数或其一可能是复数
原文:
complex power, one or both arguments may be a complex number
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。

(函数模板) [编辑]
右半侧平面范围内的复数平方根
原文:
complex square root in the range of the right half-plane
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。

(函数模板) [编辑]
三角函数
计算一个复数的正弦(sin(z)
原文:
computes sine of a complex number (sin(z))
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。

(函数模板) [编辑]
计算一个复数的余弦(cos(z)
原文:
computes cosine of a complex number (cos(z))
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。

(函数模板) [编辑]
计算一个复数的正切(tan(z)
原文:
computes tangent of a complex number (tan(z))
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。

(函数模板) [编辑]
计算一个复数的反正弦 (arcsin(z))
(函数模板) [编辑]
计算一个复数的反余弦(arccos(z)
原文:
computes arc cosine of a complex number (arccos(z))
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。

(函数模板) [编辑]
计算一个复数的反正切 (arctan(z))
(函数模板) [编辑]
双曲函数
计算复数的双曲正弦(sh(z)
原文:
computes hyperbolic sine of a complex number (sh(z))
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。

(函数模板) [编辑]
计算复数的双曲余弦(ch(z)
原文:
computes hyperbolic cosine of a complex number (ch(z))
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。

(函数模板) [编辑]
计算复数的双曲正切
原文:
computes hyperbolic tangent of a complex number
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。

(函数模板) [编辑]
计算复数的双曲反正弦
原文:
computes hyperbolic arc sine of a complex number
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。

(函数模板) [编辑]
计算复数的双曲反余弦
原文:
computes hyperbolic arc cosine of a complex number
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。

(函数模板) [编辑]
计算复数的双曲反正切
原文:
computes hyperbolic arc tangent of a complex number
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。

(函数模板) [编辑]

[编辑] 非静态数据成员

对于任何 complex<T> 类型的对象 zreinterpret_cast<T(&)[2]>(z)[0] 为 z 的实部且 reinterpret_cast<T(&)[2]>(z)[1] 为 z 的虚部。

对于任何名为 p 指向 complex<T> 数组元素的指针,及任何合法下标 ireinterpret_cast<T*>(p)[2*i] 等于复数 p[i] 的实部,而 reinterpret_cast<T*>(p)[2*i + 1] 等于复数 p[i] 的虚部

这些要求实质上限制三种 std::complex 特化的实现各声明且仅声明二个非静态数据成员,类型为 value_type ,拥有同一成员访问控制,他们分别保有实部和虚部。

此要求的目的是 C++ 复数类型与 C 语言复数类型(从而有其数组)的二进制兼容性,它要求相同的对象表示。

(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)

[编辑] 参阅

复数算术C 文档