設定 EYNY 為首頁  |  加入我的最愛
伊莉討論區
熱門搜尋:卡巴 蒼井空 卡巴斯基 1895 鷹眼 女郎我最兔 海角七號 梁文音 
最新搜尋:南拳媽媽 神鬼 蒼井空 無碼 抓狂一族 惡魔教室 改造野豬妹 超時空要塞 F 永遠在身邊 


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

C & C++ 語言C# 語言Visual Basic 語言PHP 語言JAVA 語言CGI 語言

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

Rank: 2Rank: 2
小學生(200/1000)
潛水  
UID 2440043
精華 0
積分 257
帖子 640
潛水 3322 米
閱讀權限 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
積分 150
帖子 135
潛水 848 米
閱讀權限 10
註冊 2007-8-12
發表於 2008-7-12 11:47 AM  資料 文集 短消息 
伊莉空間

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

頂部
 




當前時區 GMT+8, 現在時間是 2008-12-2 07:12 PM

Powered by Discuz! 5.0.0 © 2001-2006 Comsenz Inc.
Processed in 0.806455 second(s), 6 queries, Gzip enabled

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