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