函式模板
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 ...