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

看板C_and_CPP作者 (小天)時間9年前 (2014/09/21 11:35), 編輯推噓3(3018)
留言21則, 9人參與, 最新討論串1/1
最近學習到了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的好處嗎??? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.112.25.105 ※ 文章網址: http://www.ptt.cc/bbs/C_and_CPP/M.1411270554.A.35A.html

09/21 11:46, , 1F
你沒用過vector<int>, vector<double>等等嗎 @@
09/21 11:46, 1F

09/21 11:59, , 2F
說實話我看不太懂這份code想表達什麼......
09/21 11:59, 2F

09/21 12:03, , 3F
template是泛型程式設計重要的一環 舉例來說 STL裡面
09/21 12:03, 3F

09/21 12:03, , 4F
的sort 可以接受不同的資料型態做排序(只要資料有可
09/21 12:03, 4F

09/21 12:05, , 5F
比性) 無須修改程式碼就可以解決不同物件的問題
09/21 12:05, 5F

09/21 12:15, , 6F
你跟我學的是同一個 C++ 嗎...看的是哪本書啊XD?
09/21 12:15, 6F

09/21 12:23, , 7F
sorry可能我表達有問題>< 因為我現在寫的都是單一cpp的小
09/21 12:23, 7F

09/21 12:24, , 8F
程式,可能我之後碰到大程式就會了解template的好處了吧!
09/21 12:24, 8F

09/21 12:39, , 9F
http://ideone.com/AoJs9m 不用為了 int 跟 double
09/21 12:39, 9F

09/21 12:39, , 10F
各自實做同樣的功能
09/21 12:39, 10F

09/21 14:21, , 11F
針對你說的情況,你還是可以搭配使用呀
09/21 14:21, 11F

09/21 14:21, , 12F
09/21 14:21, 12F

09/21 19:05, , 13F
請用你的typedef實作一下node<double>和node<int>,而
09/21 19:05, 13F

09/21 19:05, , 14F
且還要同一份code唷!template就可以....
09/21 19:05, 14F

09/21 19:29, , 15F
恩恩我了解了!! 其實我根本沒搞清楚他們的用途...
09/21 19:29, 15F

09/21 19:30, , 16F
混用這兩個其實還滿方便的! 謝謝大家的回答!
09/21 19:30, 16F

09/21 22:37, , 17F
其實比較常跟typedef混淆的應該是#define
09/21 22:37, 17F

09/21 22:38, , 18F
因為不少情況下 兩個可以達成類似的效果
09/21 22:38, 18F

09/21 23:00, , 19F
Effective C++會建議盡量不要使用前置處理器...^^"
09/21 23:00, 19F

09/22 00:58, , 20F
我也滿反對#define亂飛的... orz 很麻煩的東西
09/22 00:58, 20F

09/22 11:56, , 21F
你的class打錯了
09/22 11:56, 21F
文章代碼(AID): #1K7aUQDQ (C_and_CPP)