Re: [问题] smart pointer 新手的小小问题

楼主: kwpn (ITSST)   2015-02-28 20:06:58
※ 引述《MashiroKinji (MashiroKinji)》之铭言:
: 既上次向各位前辈讨教关于的问题
: 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));
: }
: //
作者: PkmX (阿猫)   2015-02-28 21:06:00
https://gist.github.com/PkmX/9d497adb3bf77ea8ceb4g++ 4.9.2 -O3 编出来的结果基本上用iterator、range-based for或是raw pointer的结果都是一样的 foo2多了index反而更慢
作者: MashiroKinji (MashiroKinji)   2015-02-28 23:01:00
感谢大大的指教
作者: NCRCD   2015-03-03 22:51:00
如果emplace_back丢例外会memory leak,建议用make_unique
作者: LPH66 (-6.2598534e+18f)   2015-03-03 23:31:00
make_unique 是 C++14 才有的东西, 要够新的编译器才有不过 C++11 范围里确实没什么好解法就是...
作者: BlazarArc (Midnight Sun)   2015-03-05 16:08:00
楼主: kwpn (ITSST)   2015-03-05 22:21:00
C++11可以自己定义make_unique,但用VS2012的就很尴尬,没有variadic template可以用在make_uniqueVS2012很讨厌,一堆C++11重要的feature没实现,要VS2013才有

Links booklink

Contact Us: admin [ a t ] ucptt.com