函式模板學習摘錄(郭瑋網課)函式模板

2021-10-18 05:38:02 字數 924 閱讀 2603

函式模板是通用的函式描述,它們使用泛型來定義函式,其中的泛型可用具體的型別替換。通過將型別作為引數傳遞給模板,可使編譯器生成該型別的函式。

由於模板允許以泛型(而不是具體型別)的方式編寫程式,因此有時候也被稱為通用程式設計。

template

<

class

anytype

>

void

swap

(anytype &x,anytype &y)

ps:在c++11中,可以將class替換為typename

這是一種泛型程式設計。(類名定義為anytype也體現了這一點)凡是函式體相同的函式都可以用這個模板來代替,不必定義多個函式,只需在模板中定義一次即可。

函式模板可以過載,只要形參表(如上:anytype &x,anytype &y)

或者型別參數列(如上:class anytype)不同即可

直接上**

#include

using

namespace std;

template

<

typename t,

typename func>

void

map(t s,t e,t x,func op)

}int

cube

(int x)

double

square

(double x)

int a[5]

=,b[5]

;double d[5]

=,c[5]

;int

main()

關於這塊,需要注意的點是了解編譯器將模板函式例項化後函式的確定形態,避免出現一些小錯誤。(錯誤判斷參數列引數型別等)

例項化後如下:

模板 函式模板

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

《函式模板學習筆記》

函式模板 函式模板的目的 當函式的邏輯相同,但函式引數型別不同時,讓型別引數化。include using namespace std template 通知編譯器開始泛型程式設計 void tprint t1 x,t2 str1 兩個不同引數的情況 template void tswap t a,...

C 函式模板和排序的函式模板 學習筆記

我們在使用過載函式時,只是使用了函式名,而函式體還是得分別定義,在c 中函式模板為我們很好的解決了這個問題.1.函式模板的宣告 函式模板可以用來建立乙個通用的函式,以支援多種不同的形參,避免過載函式的函式體重複設計。它的最大特點是把函式使用的資料型別作為引數。函式模板的宣告形式為 template ...