該標準提供了模板專用化,std::unique_ptr可以delete[]從其析構(gòu)函數(shù)正確調(diào)用:void func(){ std::unique_ptr< int[] > arr(new int[10]); .......}有了std::shared_ptr這種專業(yè)化是不可用的,所以有必要提供有刪除其正確調(diào)用delete[]:void func(){ // Usage shared_ptr array (new double [256], [](double* arr) { delete [] arr; } ); ..............}這僅僅是疏忽嗎?(以存在的相同方式std::copy_if)還是有原因?
3 回答

天涯盡頭無女友
TA貢獻1831條經(jīng)驗 獲得超9個贊
( std::unique_ptr<T[]>
存在)非常適合開銷對您非常重要的情況。不像vector<T>
,unique_ptr<T[]>
不包括容量甚至大小的開銷??蛻舳丝赡苄枰獮榇笮≡黾油獠块_銷,但是如果陣列從不調(diào)整大小,則不會增加容量?,F(xiàn)在這并沒有變得unique_ptr<T[]>
更好vector<T>
。確實,我認為前者的用例比后者要少。但是前者的用例率不為零。

搖曳的薔薇
TA貢獻1793條經(jīng)驗 獲得超6個贊
該shared_ptr<T[]>
版本的優(yōu)點在于,它只需要一個指針取消引用即可訪問任何數(shù)組元素,而shared_ptr<vector<T>>
需要兩個指針(一個指向,一個指向shared_ptr
存儲在中的數(shù)組vector
)。
- 3 回答
- 0 關(guān)注
- 802 瀏覽
添加回答
舉報
0/150
提交
取消