[問題] 為什麼用template不用typedef呢??

作者: kdok123 (小天)   2014-09-21 11:35:51
最近學習到了template
發現她每次宣告都需要再function前面加上template
可是我覺得它的功用跟typedef其實是一樣的
但typedef定義了以後可以用在function裡也可以用在main裡的變數
template卻只能用在function裡
ex:
typedef int elemType;
template<calss T>
calss node{
};
int main()
{
node<int> head;
int data;//此時我要改template的型別這邊也要改一次
return 0;
}
但如果用typedef我只需要把變數都改成elemType,接著改elemType的型別就好
結論就是:不太知道template的好處在哪裡...
有人可以幫我分析一下template的好處嗎???
作者: bibo9901 (function(){})()   2014-09-21 11:46:00
你沒用過vector<int>, vector<double>等等嗎 @@
作者: EryngiiYang (鮑菇楊)   2014-09-21 11:59:00
說實話我看不太懂這份code想表達什麼......template是泛型程式設計重要的一環 舉例來說 STL裡面的sort 可以接受不同的資料型態做排序(只要資料有可比性) 無須修改程式碼就可以解決不同物件的問題
作者: carylorrk (carylorrk)   2014-09-21 12:15:00
你跟我學的是同一個 C++ 嗎...看的是哪本書啊XD?
作者: kdok123 (小天)   2014-09-21 12:23:00
sorry可能我表達有問題>< 因為我現在寫的都是單一cpp的小程式,可能我之後碰到大程式就會了解template的好處了吧!
作者: diabloevagto (wi)   2014-09-21 12:39:00
http://ideone.com/AoJs9m 不用為了 int 跟 double各自實做同樣的功能
作者: holydc (のヮの)   2014-09-21 14:21:00
針對你說的情況,你還是可以搭配使用呀http://ideone.com/oLDDSp
作者: Zephyr750 (紅蓮西風750)   2014-09-21 19:05:00
請用你的typedef實作一下node<double>和node<int>,而且還要同一份code唷!template就可以....
作者: kdok123 (小天)   2014-09-21 19:29:00
恩恩我了解了!! 其實我根本沒搞清楚他們的用途...混用這兩個其實還滿方便的! 謝謝大家的回答!
作者: Killercat (殺人貓™)   2014-09-21 22:37:00
其實比較常跟typedef混淆的應該是#define因為不少情況下 兩個可以達成類似的效果
作者: Zephyr750 (紅蓮西風750)   2014-09-21 23:00:00
Effective C++會建議盡量不要使用前置處理器...^^"
作者: Killercat (殺人貓™)   2014-09-22 00:58:00
我也滿反對#define亂飛的... orz 很麻煩的東西
作者: chienweichih ((゚д゚))   2014-09-22 11:56:00
你的class打錯了

Links booklink

Contact Us: admin [ a t ] ucptt.com