STL 函式模板

2021-06-26 10:03:59 字數 1246 閱讀 5813

函式模板

1.有兩個型別引數的函式模板

2.在template語句與函式模板定義之間不允許有別的語句

3.同一函式模板例項化後的所有模板函式都必須執行相同的操作

4.函式模板也可以過載

5.函式模板與同名的非模板函式可以過載,這種情況下,呼叫時先找引數完全匹配的非模板函式,    如果找不到就呼叫匹配的模板函式。

在排序函式裡可以使用函式模板,可以排序不同型別的資料

函式模板不支援模板形參預設值

模板最適合做資料結構與演算法,類模板與函式模板配合使用

例子1:

template

//int i;  //錯誤,在template語句與函式模板定義之間不允許有別的語句

t max(t x,t y)

template//模板過載

t max(t x,t y,t z)

int main()

};bool operator<(const date& a, const date& b)

int main()

;double d[4]=;

date x[3]=,,};

sort(a,5);//a==>int*

//    sort(reinterpret_cast(d),4);

sort(d,4);

sort(x,3);  //結構型別排序

show(a,5);show(d,4);show(x,3);

show(a);show(d);show(x);

const char* s[3]=;

sort(s,3);  //使用函式模板特化

show(s);

//指標型別的特化

int* ap[4]=;

double* bp[3]=;

sort(ap,4);sort(bp,3);

show(ap);show(bp);

}例子2:簡單的特化程式

template

const t& min(const t& a, const t& b)

例子:autoptr模板

template

class autoptr

~autoptr()

autoptr(autoptr& a):p(0)

autoptr& operator=(autoptr& a)

t& operator*()const

t* operator->()const

};class a

STL 函式模板筆記

模板技術 型別引數化 編寫 可以忽略型別 為了讓編譯器區分是普通函式還是 函式模板 template template void myswap t a,t b 每個模板函式都要加 template void test01 使用函式模板 函式模板可以做過載 普通函式可以做自動型別轉化 函式模板可以像普...

模板 函式模板

c 程式設計 資料結構與程式設計方法 例15.8 利用函式過載技術,求兩個整數 字元 浮點數或字串中的較大值,需要編寫4個函式larger。而c 通過提供函式模板,簡化了過載函式據的過程。include using namespace std template type,模板的形參,用於確定函式的形...

STL函式模板(即演算法)一覽

查詢演算法 adjacent find 找出乙個串中第乙個不符合次序的地方 find,find if 找出第乙個符合條件的元素 find first of 在乙個串中尋找第乙個與另乙個串中任意乙個元素相等的元素 search n 在乙個串中尋找乙個元素第n次出現的地方 count,count if ...