[问题] 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