C++學(xué)習(xí)筆記
算法+數(shù)據(jù)結(jié)構(gòu)=程序
????1)數(shù)據(jù)結(jié)構(gòu):研究以何種方式存儲,組織數(shù)據(jù),以便高效率的處理這些數(shù)據(jù)。
????2)算法:處理數(shù)據(jù)的步驟(過程)。
計算機(jī)算法可分為兩大類:
????一類叫做數(shù)值算法,它主要是解決一些工程上的數(shù)值計算問題,例如數(shù)值積分、數(shù)值求解微分方程等,有一門叫做《數(shù)值分析》或《計算方法》的 課程是專門討論這類數(shù)值算法的。
????令一類叫做非數(shù)值算法,它主要用于解決那些非數(shù)值的計算機(jī)問題,一般的程序設(shè)計中使用的算法多為這類非數(shù)值算法。
C++語法:
????C++為類型建立別名的方式有兩種。
????1)一種是使用預(yù)處理器:
????????#define BYTE char // preprocessor replaces BYTE with char
????2)第二種方法是使用 C++ ( 和 C ) 的關(guān)鍵字 typedef 來創(chuàng)建別名。
????????typedef char byte; // makes byte an alias for char
????????下面是通用格式:
?????????typedef typeName aliasName;
????模板:
????函數(shù)模板:
????template <typename AnyType>
????void Swap(AnyTupe & a,AnyType &b){
????????AnyType temp;
????????temp = a;
????????a = b;
????????b = temp;
????}
????第一行指出,要建立一個模板,并將類型命名為 AnyType。關(guān)鍵字 template 和 typename 是必需的。
????補充:
????在標(biāo)準(zhǔn) C++98 添加關(guān)鍵字 typename 之前,C++使用關(guān)鍵字 class 來創(chuàng)建模板。也就是說,可以這樣編寫模板定義:
????template <class AnyType>
????void Swap(AnyTupe & a,AnyType?&b){
????????AnyType?temp;
????????temp?=?a;
????????a?=?b;
????????b?=?temp;
????}
????typename 關(guān)鍵字使得參數(shù) AnyType 表示類型這一點更為明顯; 然而, 有大量代碼庫是使用關(guān)鍵字 class開發(fā)的。 在這種上下文中, 這兩個關(guān)鍵字是等價的。