說在前面:
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行,待繼續填坑
