[問題] smart pointer 新手的小小問題

作者: MashiroKinji (MashiroKinji)   2015-02-28 05:23:51
既上次向各位前輩討教關於的問題
https://www.ptt.cc/bbs/C_and_CPP/M.1424809447.A.FBD.html
小弟開始決定使用智能指標
想請問一下使用智能指標跑for的時候
std::vector<std::unique_ptr<MyClass>> vector;
for (int i = 0; i < 10;i++)
{
std::unique_ptr<MyClass> temp(new MyClass(i));
vector.push_back(std::move(temp));
}
//
作者: LPH66 (-6.2598534e+18f)   2015-02-28 05:45:00
都用 C++11 了就用 range-based for 吧
作者: Caesar08 (Caesar)   2015-02-28 05:54:00
能的話就用for_each,不行才考慮for loop
作者: MashiroKinji (MashiroKinji)   2015-02-28 06:14:00
怎麼覺得我學得越來越不像C++了= =課本的for(;;),陣列,指標都不用了...是說for(;;)和for(:) for(:)有比較快嗎?
作者: azureblaze (AzureBlaze)   2015-02-28 09:30:00
auto i = vector.begin();
作者: bibo9901 (function(){})()   2015-02-28 11:14:00
(1)和(2)應該是一樣的再來可以用 emplace_back 來代替 move + push_back最後智能指標只是避免你忘記手動 delete 的包裝並沒有像 java gc 那麼強大...所以也沒有多少 overhead
作者: uranusjr (←這人是超級笨蛋)   2015-02-28 12:48:00
真的, 請愛用 auto 和 for_eachfor(:) 也是個方法
作者: NilPtr (神奇的空指標)   2015-02-28 15:32:00
我看書上說for(:)編譯過後其實是用iterator的普通for loop
作者: kikiqqp (喵食罐頭)   2015-02-28 23:17:00
程式是寫給"人"看的,編譯器才不管啥奇淫技巧for(;;)變成組語後大多一樣啦
作者: suhorng ( )   2015-02-28 23:24:00
記得還有不推薦把 new 跟智能指標建構分開make_[unique|shared] 除了記憶體連續 也處理例外比較好

Links booklink

Contact Us: admin [ a t ] ucptt.com