推 LPH66:優點在於同樣的程式碼可以使用在 vector 以外的容器 08/09 18:51
推 legendmtg:for (auto i : myVect) 很棒的 08/09 20:09
→ loveme00835:樓上要小心 value semantic, 可用 auto& 08/09 20:35
→ Arton0306:回L大 這樣的優點好像有點小 用了vector後很少改變 08/09 21:22
→ Arton0306:所以我列舉vector時幾乎都用B的寫法 08/09 21:23
推 EdisonX:那個優點很大!你可想一下同一份演算法給 array,list, 08/09 21:27
→ Arton0306:c++11 完全不會...冏 08/09 21:27
→ EdisonX:double list,deque,..., 等不同資料結構容器時,你要寫幾次 08/09 21:27
→ Arton0306:原來是從這個角度來看 這麼說的話 假設把某個func當作 08/09 21:31
→ Arton0306:一個algo,我會直接把container當參數傳進去 而E大的角 08/09 21:32
→ Arton0306:度是傳一組iterator進去 這確實是滿符合STL的樣式的 08/09 21:33
→ loveme00835:從 template function 的角度來看好了, 裡面的程式碼 08/09 21:48
→ loveme00835:必須做到假設依賴的操作最少, 復用性最高, 所以 STL 08/09 21:48
→ loveme00835:algos 才會依賴 iters 而已, 而且再其外輔以 traits 08/09 21:49
→ loveme00835:和其他可特製化的 functions, 靈活度不是跟容器綁死可 08/09 21:51
→ loveme00835:以比擬的 08/09 21:51
→ loveme00835:(B) 的函式依賴 size() operator[]() 這些操作, 而且 08/09 21:54
→ loveme00835:size() function 的回傳值必須能成功轉為 unsigned 08/09 21:55
→ loveme00835:且比大小不會發生錯誤, 基本上 size() 的回傳型態是 08/09 21:55
→ loveme00835:vector<myType>::size_type 你也用錯了, 該用什麼型態 08/09 21:56
→ loveme00835:應該由容器決定而不是你自己 08/09 21:56
→ diabloevagto:A的i宣告可以改用auto 08/09 23:09
→ james732:如果以「這個迴圈絕對只用在這裡,也不可能把容器換掉」 08/10 14:15
→ james732:這個前提的話,用B還會有什麼壞處嗎? 08/10 14:15
→ Donze:B的做法在vector上效率有比較差嗎 08/10 14:59