<complex>

定义容器类模板 complex 及其支持模板。

要求

标头:<complex>

命名空间: std

注解

一个复数是有序的实数对。 在纯粹几何术语中,复平面是真实的二维平面。 将复平面与实平面区分开来的特质在于它具有其他代数结构。 这种代数结构有两个基本操作:

  • 加法,其定义为 (a, b) + (c, d) = (a + c, b + d)

  • 乘法,其定义为 (a, b) * (c, d) = (ac - bd, ad + bc)

带复数加法和复数乘法操作的复数集在标准代数意义上为域:

  • 加法和乘法的操作是可交换且相关联的,并且乘法通过加法分配的方式与在实数域上进行的实数加法和乘法完全相同。

  • 复数 (0, 0) 是加法恒等元,(1, 0) 是乘法恒等元。

  • 一个复数 (a, b) 的加法逆元是 (-a, -b),除 (0, 0) 外的所有此类复数的乘法逆元是

    (a/(a2 + b2), -b/(a2 + b2))

通过以 z = a + bi 的形式(其中 i2 = -1)表示复数 z = (a, b),实数集的代数规则可应用于复数集及其分量。 例如:

(1 + 2i) * (2 + 3i) = 1 * (2 + 3i) + 2i * (2 + 3i) = (2 + 3i) + (4i + 6i2) = (2 - 6) + (3 + 4)i = -4 + 7i

复数系统是一个域,但它不是一个有序域。 不像域或实数及其子集,复数没有有序排列,因此不能按照对待实数的方式,将不等式用于复数。

表示复数 z 有三种常见形式:

  • 笛卡尔坐标系:z = a + bi

  • 极坐标系:z = r (cos p + i sin p)

  • 指数坐标系:z = r * eip

在复数的这些标准表示形式中使用的术语请参照如下内容:

  • 笛卡尔坐标实分量或实部 a

  • 笛卡尔坐标虚分量或虚部 b

  • 复数 r 的模数或绝对值。

  • 参数或相位角 p(以弧度为单位)。

除非另行指定,否则可以返回多个值的函数需要对其参数返回大于 -π 且小于或等于 +π 的主值以使其保持单值。 所有的角度都必须以弧度表示,其中,圆周具有 2π 弧度(360 度)。

成员

函数

名称 描述
abs 计算复数的模数。
acos
acosh
arg 从复数中提取自变量。
asin
asinh
atan
atanh
conj 返回复数的复数共轭。
cos 返回复数的余弦值。
cosh 返回复数的双曲余弦值。
exp 返回复数的指数函数。
imag 提取复数的虚分量。
log 返回复数的自然对数。
log10 返回复数的以 10 为底的对数。
norm 提取复数的范数。
polar 返回以笛卡尔坐标形式表示的,对应于指定模数和自变量的复数。
pow 计算通过进行底数为复数的另一个复数次幂运算获得的复数。
proj
real 提取复数的实分量。
sin 返回复数的正弦值。
sinh 返回复数的双曲正弦值。
sqrt 返回复数的平方根。
tan 返回复数的正切值。
tanh 返回复数的双曲正切值。

运算符

名称 描述
operator!= 测试两个复数是否不相等,这两个复数或其中一个可能属于其类型与实部和虚部的类型相同的子集。
operator* 将两个复数相乘,这两个复数或其中一个可能属于其类型与实部和虚部的类型相同的子集。
operator+ 将两个复数相加,这两个复数或其中一个可能属于其类型与实部和虚部的类型相同的子集。
operator- 将两个复数相减,这两个复数或其中一个可能属于其类型与实部和虚部的类型相同的子集。
operator/ 将两个复数相除,这两个复数或其中一个可能属于其类型与实部和虚部的类型相同的子集。
operator<< 一个模板函数,用于将复数插入输出流。
operator== 测试两个复数是否相等,这两个复数或其中一个可能属于其类型与实部和虚部的类型相同的子集。
operator>> 一个模板函数,用于从输入流提取复值。

“属性” 描述
complex<double> 显式专用化的类模板描述一个对象,该对象存储两个都为 double 类型的有序对象对,其中第一个对象表示复数的实部,第二个对象表示复数的虚部。
complex<float> 显式专用化的类模板描述一个对象,该对象存储两个都为 float 类型的有序对象对,其中第一个对象表示复数的实部,第二个对象表示复数的虚部。
complex<long double> 显式专用化的类模板描述一个对象,该对象存储两个都为 long double 类型的有序对象对,其中第一个对象表示复数的实部,第二个对象表示复数的虚部。
complex 这个类模板描述一个对象,该对象用于表示复数系统和执行复杂算术运算。

文字

<complex> 标头定义以下用户定义的文本。 这些文本创建一个复数,实部为 0,虚部为输入参数的值。

声明 说明
constexpr complex<long double> operator""il(long double d)
constexpr complex<long double> operator""il(unsigned long long d)
返回:complex<long double>{0.0L, static_cast<long double>(d)}
constexpr complex<double> operator""i(long double d)
constexpr complex<double> operator""i(unsigned long long d)
返回:complex<double>{0.0, static_cast<double>(d)}
constexpr complex<float> operator""if(long double d)
constexpr complex<float> operator""if(unsigned long long d)
返回:complex<float>{0.0f, static_cast<float>(d)}

另请参阅

头文件引用
C++ 标准库中的线程安全