→ tropical72:可再優化,可能會有更好作法,但compile opt.不會把 loop 09/24 13:15
→ tropical72:assign 換成 memcpy. 09/24 13:15
→ tropical72:對了,incldue algorithm 裡的 copy/fill 應都有優化過. 09/24 13:24
→ iamstudent:感謝回覆,typeid的作法似乎會多出run time比較 09/24 13:24
→ iamstudent:我想知道的是能不能compile time就決定 09/24 13:24
→ iamstudent:另外,最佳化會把短loop展開嗎? 09/24 13:25
→ tropical72:不會展開,這也是數值分析src求速度要把loop全都roll開 09/24 13:30
推 loveme00835:std::copy 對內建型別通常會採較低階/快速的複製動作 09/24 13:35
推 tropical72:@loveme00835:所以copy對POD「有可能」偷做 memcpy 嗎? 09/24 13:36
→ loveme00835:但不是必然 09/24 13:36
→ loveme00835:@tropical72: yes 09/24 13:40
→ loveme00835:STL algorithms不只是一些C語言函式的替代方案,我覺 09/24 13:42
→ loveme00835:得他也讓讀者用更高階方式思考,及提供正交性可讀性, 09/24 13:44
→ loveme00835:同樣一個for, tells nothing 09/24 13:45
推 tropical72:謝謝lovme00835不吝指導 *^_^* 09/24 13:45
→ iamstudent:我自己找到答案了,c++ templates The Complete Guide 09/24 14:31
→ iamstudent:19.1有可以確定是否為基本type的辦法 09/24 14:32
→ iamstudent:還是會增加額外的run time比較,但是比起t大的typeid 09/24 14:33
→ iamstudent:可以只比較一次 09/24 14:34
推 tomap41017:樓上那本書裡面就有解答了! 09/24 16:19
→ tomap41017:C++ algorithm真的蠻建議讀侯捷的STL源碼剖析 09/24 16:20
→ tomap41017:std::copy幫你處理了很多事,看完你會發現C++很威 09/24 16:20
推 avhacker:哪要那麼麻煩,早就有現成工具了 09/24 16:23
→ priv:現代的compiler很猛,迴圈如果只操作POD會展開很正常 09/24 16:24
→ priv:不過如果中間通過一些比較複雜的運算就不一定了 09/24 16:24
→ iamstudent:The Complete Guide這本書真的很棒 09/24 16:46
→ iamstudent:metaprogramming展開迴圈、ifelse都可以辦到 09/24 16:48