日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

C++函數模板的使用詳解_C 語言

作者:Derrick?Bai ? 更新時間: 2022-03-23 編程語言

函數模板可以適用泛型來定義函數,其中泛型可以是(int, double, float)等替換。在函數重載過程中,通過將類型作為參數傳遞給模板,可使編譯器自動產生該類型的函數。

工作原理:比如需要定義一個比大小的max函數,有三種類型的數據(int,double,float),可能就需要編寫三個函數,這樣既浪費時間,且容易出錯。如:

#include <iostream>
 
using namespace std;
 
int Max(int a, int b);
double Max(double x, double y);
float Max(float s, float t);
 
int main()
{
    cout << Max(1, 2) << endl;
 
    cout << Max(3.0, 4.0) << endl;
 
    cout << Max(5.23, 5.24) << endl;
 
    return 0;
}
 
int Max(int a, int b)
{
    return a > b ? a : b;
}
 
double Max(double x, double y)
{
    return x > y ? x : y;
}
 
float Max(float s, float t)
{
    return s > t ? s : t;
}

?結果如下:

?從上面就可以看出一個很簡單的比較大小的函數,居然寫的這么繁瑣,顯然增加了工作量,極大降低了工作效率,因此,函數模板的出現十分有效的解決了這個問題。函數模板允許以任意類型的方式定義函數,有兩種形式例如:

形式1:

template <typename Anytype> //template是函數模板的關鍵字
void Swap(Anytype &a,Anytype &b)
{
    Anytype temp;
    temp=a;
    a=b;
    b=temp;
}

形式2:

template <class Anytype> //class是函數模板的關鍵字
void Swap(Anytype &a,Anytype &b)
{
    Anytype temp;
    temp=a;
    a=b;
    b=temp;
}
?使用函數模板之后的代碼如下:

形式1 :

#include <iostream>
 
using namespace std;
 
template <typename T>
T Max(T a, T b);
/* double Max(double x, double y);
float Max(float s, float t); */
 
int main()
{
    cout << Max(1, 2) << endl;
 
    cout << Max(3.0, 4.0) << endl;
 
    cout << Max(5.23, 5.24) << endl;
 
    return 0;
}
 
template <typename T>
T Max(T a, T b)
{
    return a > b ? a : b;
}

?形式2:

#include <iostream>
 
using namespace std;
 
template <class T>
T Max(T a, T b);
 
int main()
{
    cout << Max(1, 2) << endl;
 
    cout << Max(3.0, 4.0) << endl;
 
    cout << Max(5.23, 5.24) << endl;
 
    return 0;
}
 
template <class T>
T Max(T a, T b)
{
    return a > b ? a : b;
}

結果如下:

對比之下,明顯精簡了很多。

原文鏈接:https://blog.csdn.net/m0_56574701/article/details/122293240

欄目分類
最近更新