91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C++泛型編程的方法是什么

發布時間:2022-01-12 22:04:54 來源:億速云 閱讀:147 作者:iii 欄目:軟件技術

本文小編為大家詳細介紹“C++泛型編程的方法是什么”,內容詳細,步驟清晰,細節處理妥當,希望這篇“C++泛型編程的方法是什么”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。

我們先來看看數據結構的特點:1、專注于數據元素之間的關系;2、專注于特定結構之上的算法。數據結構并不關注數據元素的具體類型

那么如何為數據結構的學習選擇合適的語言呢?我們之前有見到過 C 語言版的數據結構,也有 C++ 版的數據結構。但是從耦合性的角度來看,支持泛型編程的語言最適合數據結構的學習。所謂泛型編程便指的是不考慮具體數據類型的編程方式。對于 Swap 函數可以考慮寫成泛型寫法,如下

void Swap(T& a, T& b)
{
    T t = a;
    a = b;
    b = t;
}

        Swap 泛型寫法中的 T 不是一個具體的數據類型,而是泛指任意的數據類型,這樣我們是不是就可以代碼復用了,不用重復的搬磚了。泛型編程對應于 C++ 中的函數模板,它是一種特殊的函數可用不同類型進行調用。它看起來和普通函數很相似,其區別是類型可被參數化。函數模板格式如下

template < typename T >
void Swap(T& a, T& b)
{
    T t = a;
    a = b;
    b = t;
}

        下來我們來看看函數模板的語法規則:1、template 關鍵字用于聲明開始進行泛型編程;2、typename 關鍵字用于聲明泛指類型。如下圖所示

C++泛型編程的方法是什么   

        我們來看看函數模板的使用:1、自動類型推倒調用;2、具體類型顯示調用。具體如下

int a = 0;
int b = 1;

Sawp(a, b);          // 自動推導

float c= 2;
float d = 3;

Swap<float>(c, d);    // 顯示調用

        我們下面還是以代碼為例來進行說明

#include <iostream>

using namespace std;

template < typename T >
void Swap(T& a, T& b)
{
    T t = a;
    a = b;
    b = t;
}

template < typename T >
class Op
{
public:
    T process(T v)
    {
        return v * v;
    }
};

int main()
{
    int a = 1;
    int b = 2;
    
    Swap(a, b);
    
    cout << "a = " << a << ", " << "b = " << b << endl;
    
    double c = 0.01;
    double d = 0.02;
    
    Swap<double>(d, c);
    
    cout << "c = " << c << ", " << "d = " << d << endl;
    
    Op<int> opInt;
    Op<double> opDouble;
    
    cout << "5 * 5 = " << opInt.process(5) << endl;
    cout << "0.5 * 0.5 = " << opDouble.process(0.5) << endl;
    
    return 0;
}

        我們來編譯看看結果,是否如我們代碼所寫的那樣

C++泛型編程的方法是什么

        C++ 中的類模板是以相同的方式處理不同的類型,在類聲明前使用 template 進行標識;<typename T> 用于說明類中使用的泛指類型 T。類模板只能顯示指定具體類型,是無法進行自動推導的;使用具體類型 <Type> 定義對象。在上面的例子中,如果我們在第39, 40行不指定具體類型時,看看會發生什么?

C++泛型編程的方法是什么

讀到這里,這篇“C++泛型編程的方法是什么”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

c++
AI

阜新| 静乐县| 华池县| 荣成市| 柯坪县| 盖州市| 田东县| 司法| 新干县| 修武县| 天峨县| 镇坪县| 玉屏| 临沧市| 四川省| 镇远县| 西昌市| 明光市| 沧源| 于田县| 乐业县| 荥经县| 滨海县| 陆良县| 中超| 金山区| 吴旗县| 江源县| 公安县| 马龙县| 乌兰县| 绍兴县| 寿宁县| 麻城市| 中江县| 民勤县| 博客| 天水市| 盐城市| 土默特右旗| 吉林市|