泛型:指在多種資料型別上皆可操作的含義。泛型程式設計的代表作品stl是一種高效、泛型、可互動操作的軟體元件
泛型程式設計最初誕生於c++中,目的是為了實現c++的stl(標準模板庫)。
模板的精神:型別引數化
話不多說,看例子吧。
// template既可以與函式同行,也可以將函式另起一行來書寫
// t 即為泛化的型別
// t 獲取型別的過程,稱為模板的例項化
// 函式模板通過具體型別產生不同的函式,編譯器會對函式模板進行兩次編譯:
// 在宣告的地方對模板**本身進行編譯(型別檢查),在呼叫的地方對引數替換後的**進行編譯(**生成)
//泛型的特性:
// 1.先例項化,再呼叫
// 2.嚴格匹配, 不存在隱式轉化
// 3.尺有所短,寸有所長
// 演算法 sort 就是支援型別泛化的代表排序演算法
using namespace std;
templatevoid myswap(t &a, t &b)//比較指標的大小
//template<>
//int compare>(const char &a, const char * &b)elsetemplate
bool genericlist::full() const{
return (_curidx == _maxlength);template
void genericlist::erase(){
_curidx = 0;template
ostream & operator<<(ostream &out, genericlist& list){
for(int i = 0; i < list._curidx; i++){
out<
//類模板中的友元
//1在宣告處
//2在類外的定義處
//@1 在類中宣告<> 表明,是個宣告
//@2 在類外實現
//@3 在類的宣告的前面, 作前向宣告,並且在其前作類的前向宣告
//模板通常會將宣告和實現, 放在乙個檔案中, 即hpp中
//c/c++中的編譯模式是,按檔案進行編譯, 在任何需要例項化的地方,都需要看到模板的全貌
using namespace std;
using namespace listspace;
int main()
genericlistfirst_list(2);
first_list.add(1);
first_list.add(2);
coutseconde_list.add('a');
seconde_list.add('b');
seconde_list.add('c');
cout 實現 在上課時間的定義給它的乙個或多個引數,這些引數代表了不同的資料型別。抽象的類。在呼叫類模板時,指定引數,由編譯系統依據引數提供的資料型別自己主動產生對應的模板類 詳細的類。c 的類模板的寫法例如以下 template 型別參數列 型別參數列的寫法就是 class 型別引數1,class 型別引... 類模板是在類的定義時,不能確定成員的型別時,為了防止 的冗餘,用t代替。t是乙個型別,告訴編譯器,型別還沒有繫結,不知道現在是什麼型別。使用的時候,類名後要用尖括號把型別名括起來。complex int a 1,2 complex double a 1.0,2.0 當編譯時,編譯器看到了使用者的t是... 1,stl裡有些什麼?包括三個內容 容器 迭代器 演算法。2,容器有哪些?有stack,vector,queue,deque,list,set,multiset,map,multimap等。中文 棧,向量,佇列,雙端佇列,列表,集合,多重集合,對映,多重對映等。3,queue的兩個好朋友 雙端佇列 ...初步C 類模板學習筆記
C 學習8 模板初步理解
C 標準模板類庫(STL)之queue初步