設定 EYNY 為首頁  |  加入我的最愛
伊莉討論區


休閒聊天
學術文化
感情感性
興趣交流
家庭事務
旅遊交流
飲食交流
家族門派
貼圖分享
動漫交流
音樂世界
美容打扮
潮流資訊
影視娛樂
電玩遊戲
連線遊戲
網絡遊戲
交易廣場
下載分享
BT下載區
CB下載區
電腦資訊
數碼產品
手機交流
網站事務
體育運動
時事新聞
上班一族
博彩娛樂
成人話題


 
標題: [討論] templete
goodbye_mylove
(藍影)

Rank: 2Rank: 2
小學生(200/1000)
潛水  
UID 2440043
精華 0
積分 323
帖子 628
潛水 3362 米
閱讀權限 20
註冊 2007-9-29
發表於 2008-6-30 09:07 PM  資料 文集 短消息 
伊莉部落格伊莉交友伊莉聊天伊莉相簿

[顯示] [隱藏]
用 max 這種 example 應該是最簡單明瞭的...

一般而言,如果你要 "取最大值" 的話,你可以要分幾種情況討論

1. int 取最大  2. float 取最大  3. double 取最大  4. unsigned 取最大.....

所以如果你不用 template 的話,程式碼可能會變這樣...

#include <iostream>
using namespace std;

/////////////////////////////////////////////////
// Max sub function

int Max1(int a, int b)
{
        if(a>b) return a;
        else return b;
}

float Max2(float a, float b)
{
        if(a>b) return a;
        else return b;
}

double Max3(double a, double b)
{
        if(a>b) return a;
        else return b;
}

/////////////////////////////////////////////////
// Main function

int main(int argc, char *argv[])
{
        int a=0, b=7;
        float c=1.0, d=2.0;
        double e=1.35, f=2.78;

        cout << "a and b, max is " << Max1(a,b) << endl;
        cout << "c and d, max is " << Max2(c,d) << endl;
        cout << "e and f, max is " << Max3(e,f) << endl;

        return 0;
}

像這種相似,但是卻又一直寫似類東西的,就用 template 的方式取代走會比較方便...

#include <iostream>
using namespace std;

/////////////////////////////////////////////////
// Max sub function

template <class T> T Max(T a, T b)
{
        if(a>b) return a;
        else return b;
}

/////////////////////////////////////////////////
// Main function

int main(int argc, char *argv[])
{
        int a=0, b=7;
        float c=1.0, d=2.0;
        double e=1.35, f=2.78;

        cout << "a and b, max is " << Max(a,b) << endl;
        cout << "c and d, max is " << Max(c,d) << endl;
        cout << "e and f, max is " << Max(e,f) << endl;

        return 0;
}

你可以發現...

template <class T>  T  Max(T a, T b) {.....}

它裡面的 T 是在你呼叫時,傳入的資料型態是什麼當下才決定的,

當然,你也可以寫得像是這樣..

(先說明,這個例子的用法不好,我只是要告訴你,裡面的不定變數型態可以不只一個)

[code]#include <iostream>
u [ 瀏覽完整內容請先註冊或登入會員。]




if you love me, let it be.
if you don't, let me free.
頂部
oisiyasan

Rank: 1
幼兒生(0/200)
潛水  
UID 2073302
精華 1
積分 153
帖子 125
潛水 699 米
閱讀權限 10
註冊 2007-8-12
發表於 2008-7-12 11:47 AM  資料 文集 短消息 
維克斯討論區

goodbye_mylove
寫的超讚
淺顯易懂
現在這個我想我能夠活用了
非常感謝
頂部
 




當前時區 GMT+8, 現在時間是 2008-9-6 04:02 AM

    本论坛支付平台由支付宝提供
携手打造安全诚信的交易社区 Powered by Discuz! 5.0.0  © 2001-2006 Comsenz Inc.
Processed in 0.369936 second(s), 7 queries , Gzip enabled

清除 Cookies - 聯繫我們 - 廣告查詢 [威旭代理] - 伊莉討論區 - Archiver
重要聲明:本討論區是以即時上載留言的方式運作,伊莉討論區對所有留言的真實性、完整性及立場等,不負任何法律責任。而一切留言之言論只代表留言者個人意見,並非本網站之立場,用戶不應信賴內容,並應自行判斷內容之真實性。於有關情形下,用戶應尋求專業意見(如涉及醫療、法律或投資等問題)。 由於本討論區受到「即時上載留言」運作方式所規限,故不能完全監察所有留言,若讀者發現有留言出現問題,請聯絡我們。伊莉討論區有權刪除任何留言及拒絕任何人士上載留言,同時亦有不刪除留言的權利。切勿撰寫粗言穢語、誹謗、渲染色情暴力或人身攻擊的言論,敬請自律。本網站保留一切法律權利。