C++STL complex吃书使用指南
说在前面:
complex即为复数
使用c++自带的complex类型,首先要有<complex>头文件,还要使用std命名空间
声明方式:
complex <T> a; 声明一个类型为T的复数a,T可为int,float,double,long double,甚至是string等各种类型。如果类型非数值类型,只会导致一些函数无法使用。可见complex本质与元素对类似。
类型可为自建的类/结构体类型,这时只需重载一些东西((流)输入输出,运算符,常用函数...)
可使用构造函数:
complex <T> a(x,y) ; 声明一个实部为x,虚部为y的复数a。可没有第二个参数,此时默认虚部为0。
complex <T> (x,y) 构造一个实部为x,虚部为y的复数,常常用于赋值。
运算:
一元运算符:+(正号),-(负号)后接实数或复数
二元运算符:
=(赋值),+=,-=,*=,/= 后接实数或复数(复数类型可与运算符前的复数不同)
+,-,*,/,==,!= 两边实数复数均可,只要求一边实数另一边复数时两数同一类型(都是double等)
输入输出方式:
1、使用流输入输出。复数的流输出是有序数对的形式,流输入可以只输入一个数(为实部,此时虚部默认为0),或一个有序数对(数对也可以无第二个数,此时效果等同于只输入一个数),如:
2、通过用.imag()和.real()函数直接操作复数的实部虚部(printf,scanf(别忘加&),快读快输出等)
常用函数:
1参:
real():返回可修改的复数实部
imag():返回可修改的复数虚部
abs():求模。
norm(): 函数模板会返回复数的量的平方。
arg() :返回以弧度为单位的复数 z幅角的主值, 相当于atan(z.imag()/z.real())。
conj():返回共轭复数。
sqrt():复数平方根(一定有解,可由复数的三角表示易知)
cos(),cosh(),sin(),sinh(),tan(),tanh():返回复数的相应值(与幅角的相应值不是一个概念)
以上函数除了conj()返回相应类型复数,其余都返回复数的类型。
exp,log,log10,四个pow,prqj,待以后深究
2参:
polar() 函数模板接受量和相角作为参数,并返回和它们对应的复数对象。复数类型为参数类型,参数类型必须相同。
特殊:
.real():有参则为复数实部赋值,无返回值;无参则同real()。
.imag():有参则为复数虚部赋值,无返回值;无参则同imag()。
后记:
对于一个括号内若干由逗号隔开的数,若前没有复数的声明定义,则只是一个逗号表达式,会返回最后一个数的值。
现已吃到complex源文件488行,待继续填坑