[問題] smart pointer 新手的小小問題
看板C_and_CPP作者MashiroKinji (MashiroKinji)時間9年前 (2015/02/28 05:23)推噓3(3推 0噓 14→)留言17則, 9人參與討論串1/2 (看更多)
既上次向各位前輩討教關於的問題
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));
}
//-----
(1)
for (std::vector<std::unique_ptr<MyClass>>::iterator i = vector.begin(); i
!= vector.end(); i++)
{
i->get()->Print();
}
(2)
for (int i = 0; i < vector.size(); i++)
{
vector[i]->Print();
}
//-----
vector.clear();
想請問一下(1),(2)哪個做法會比較好呢?
感覺(1)的方法超長的看得好辛苦...
(2)的話又感覺不是很專業!?
另外同樣的功能用傳統的指標去做整體程式碼就看起來很簡潔
而且在push_back的時候還可以
vector.push_back(new MyClass(i));
比起要創建一個unique_ptr然後再用move傳送
感覺還要快好多
是不是在使用智能指標後就要有著和使用Java的垃圾回收機制
一定要有著效能降低的準備??
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 121.254.69.174
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1425072234.A.422.html
推
02/28 05:45, , 1F
02/28 05:45, 1F
→
02/28 05:54, , 2F
02/28 05:54, 2F
→
02/28 06:14, , 3F
02/28 06:14, 3F
→
02/28 06:15, , 4F
02/28 06:15, 4F
→
02/28 06:32, , 5F
02/28 06:32, 5F
→
02/28 09:30, , 6F
02/28 09:30, 6F
推
02/28 11:14, , 7F
02/28 11:14, 7F
→
02/28 11:14, , 8F
02/28 11:14, 8F
→
02/28 11:16, , 9F
02/28 11:16, 9F
→
02/28 11:23, , 10F
02/28 11:23, 10F
→
02/28 12:48, , 11F
02/28 12:48, 11F
→
02/28 12:49, , 12F
02/28 12:49, 12F
→
02/28 15:32, , 13F
02/28 15:32, 13F
→
02/28 23:17, , 14F
02/28 23:17, 14F
→
02/28 23:17, , 15F
02/28 23:17, 15F
推
02/28 23:24, , 16F
02/28 23:24, 16F
→
02/28 23:25, , 17F
02/28 23:25, 17F
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 2 篇):