C 模板初步

2021-09-24 20:41:11 字數 1429 閱讀 7137

泛型:指在多種資料型別上皆可操作的含義。泛型程式設計的代表作品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 類模板學習筆記

實現 在上課時間的定義給它的乙個或多個引數,這些引數代表了不同的資料型別。抽象的類。在呼叫類模板時,指定引數,由編譯系統依據引數提供的資料型別自己主動產生對應的模板類 詳細的類。c 的類模板的寫法例如以下 template 型別參數列 型別參數列的寫法就是 class 型別引數1,class 型別引...

C 學習8 模板初步理解

類模板是在類的定義時,不能確定成員的型別時,為了防止 的冗餘,用t代替。t是乙個型別,告訴編譯器,型別還沒有繫結,不知道現在是什麼型別。使用的時候,類名後要用尖括號把型別名括起來。complex int a 1,2 complex double a 1.0,2.0 當編譯時,編譯器看到了使用者的t是...

C 標準模板類庫(STL)之queue初步

1,stl裡有些什麼?包括三個內容 容器 迭代器 演算法。2,容器有哪些?有stack,vector,queue,deque,list,set,multiset,map,multimap等。中文 棧,向量,佇列,雙端佇列,列表,集合,多重集合,對映,多重對映等。3,queue的兩個好朋友 雙端佇列 ...