PTT
Submit
Submit
選擇語言
正體中文
简体中文
PTT
C_and_CPP
[問題] smart pointer的一些疑問
作者:
flere
(人間失格)
2016-04-27 10:03:41
hi~
最近學了C++的smart pointer
學習內容為:
C++ primer 5th, chapter 12
版上的一部影片以及一些文章
有些疑問想跟大家請教與討論!
(與C++交往不夠深,有蠢問題的話請見諒> <)
1.
既然我們有smart pointer可以用
那還會有什麼情況
是"一定必須"要使用built-in pointer的呢?
我指的是一般應用程式開發,而不是到語言很底層的地方
因為我想smart pointer這個物件裡應該也是使用built-in poiner對吧?
以現代C++使用者的角度來看
是否應盡量避免使用built-in pointer?
2.
對於unique_ptr的使用時機超級不了解!!
這到底應該什麼時候使用呀??
3.
chapter 12.2是在講dynamic array
有提到說,我們應該盡量使用library container
盡量不要dynamic allocate array
但他是說"大部份的應用"
有什麼情況是使用dynamic allocate array會比較好的嗎?
4.
使用shared_ptr來產生2維陣列的方式
我底下這樣做可以順利執行
但我不確定是不是 好/正確 的方法
比如說我要產生一個3*4的2維陣列:
auto p = make_shared<vector<vector<int>>>();
p->resize(3);
for(auto &x : *p)
x.resize(4);
問題很多> <
謝謝大家!!
作者:
Caesar08
(Caesar)
2016-04-27 10:10:00
1. 例如你的object不需被動態創造出來(所以不會用smartpointer),又需要被別的object操作時,但又需要放在container時2. 當你需要動態創造object,又想要把他當成一般object使用時(所以不需自己delete)
作者:
Frozenmouse
(ï¼Šå†°ä¹‹é¼ ï¼Š)
2016-04-27 10:14:00
unique ptr 就我之前看是為了保證只有一個地方有該指標的生殺大權
作者:
Caesar08
(Caesar)
2016-04-27 10:14:00
3. 看不懂。4. 沒問題你的a與b是不同意思,不能拿來比較。還有,動態陣列用vector就好,沒必要用shared_ptrshared_ptr主要是拿來解決共用的問題,而不是記憶體浪費...
作者:
Frozenmouse
(ï¼Šå†°ä¹‹é¼ ï¼Š)
2016-04-27 10:58:00
http://goo.gl/dQlwSl
底下的 Notes 部份,一時想不太到例子(′・ω・`)不過大致上就是像前面說的,不用自己delete,它會直接跟那個unique_ptr的生命週期有個應用例是丟例外的時候,純指標還要另外想辦法手動釋放,而用unique_ptr則不用擔心這點
作者:
Jockey66666
(往事已成追憶)
2016-04-27 14:12:00
當你不需要copy的時候都用unique_ptr
作者:
CoNsTaR
((const *))
2016-04-27 17:17:00
如果你真的很想把 Ref 裝進 STL 容器可以用 std::reference_wrapper不過我也還沒去研究過 reference_wrapper 的實作 還不知道用指標和 reference_wrapper 的優缺點剛剛看了一下,std::reference_wrapper 內部也是直接儲存指標
作者: firose (guest也是也是也是也是也)
2016-04-27 17:28:00
unique_ptr 很輕 就像一個 native ptr 一樣
作者:
Frozenmouse
(ï¼Šå†°ä¹‹é¼ ï¼Š)
2016-04-27 18:35:00
的確,不需copy的話unique_ptr的語義應該比較適合shard_ptr就是要拿來分享啊,不然要幹嘛(?*shared
作者:
Caesar08
(Caesar)
2016-04-27 21:24:00
拿來做atomic operation...
作者:
Littlechozy
(キミに100%)
2016-04-27 22:10:00
做pimpl的時候要用unique_ptr可參考
http://stackoverflow.com/questions/5576922
作者:
legendmtg
(CLANNAD)
2016-04-27 22:12:00
unique_ptr 最常用的場合就pimpl idiom
作者:
flere
(人間失格)
2016-04-28 06:12:00
還沒碰過這個> <我會好好記起來的!!真的是謝謝大家: )))
繼續閱讀
[問題] 簡單字串問題
shuian88
[徵文] C++程序设计原理与实践
descent
[問題] C++ 編譯時遇到的變數轉換錯誤
Kanyahi
[討論] 在 Windows 上的 C/C++ 議題
Neisseria
[分享] MSYS2
Neisseria
[問題] Visual C++ 6.0 在 Win8 Win10 上執行
name2name2
[問題] 樣板程式庫queue問題
t78923t
[問題] 如何隨時讀取另一個物件內的資訊
shadowth
Re: [問題] template 用法
gn00618777
[問題] declaration of function in a function
bjk
Links
booklink
Contact Us: admin [ a t ] ucptt.com