2010-03-26 86 views
1

任何想法如何爲模板做到這一點?謝謝使用模板實現組合功能

例如,Combine(<list containing 6,3,1,9,7>, std::plus<int>()) 應計算((((6+3)+1)+9)+7)

Combine(const Container& c, Function fn) throw (NotEnoughElements) 
{ 
    your code goes here 
} 
+0

這是功課? – fbrereto 2010-03-26 19:10:08

回答

2

returnstd::accumulate(c.begin()+1, c.end(), *(c.begin()), fn);

(錯誤處理留作練習OP和讀者。)

+0

謝謝!我們如何處理溢出(比如大數)和重載(比如char類型)? sry我沒有如此經驗模板 – user302792 2010-03-26 19:19:35

+0

@ gkid123:'std :: plus'不能處理溢出。你需要編寫自己的安全「加號」結構。重載是自動的。 – kennytm 2010-03-26 19:28:53