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行,待繼續填坑                                                                                                            

Tags: