[問題] C++ smart pointer產生2維陣列?
請問shared_ptr 有辦法new 動態二維陣列嗎?
原本的 C code :
int** p = new int* [3];
for(int i = 0; i < 3; i++)
{
p[i] = new int [i+1];
}
結果會產生一個2維陣列
[]
[][]
[][][]
如果現在要改成 shared_ptr,要怎麼做呢?
std::shared_ptr<int*> q( new int* [3], []( int **q ) { delete[] *q; } );
for(int i = 0; i < 3; i++)
{
q.get()+i = shared_ptr<int>(new int[i+1], []( int *q ) { delete[] q; } );
}
compile的結果是...
cannot convert from 'std::shared_ptr<int>' to 'int **'
不過我改不出正確的結果...有人知道要怎麼寫嗎?
還是我這種用法不對? 有其他的STL可以實現這樣的功能嗎?
先謝過了~m(_ _)m
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 223.136.126.41
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1421745666.A.973.html
※ 編輯: everydate (223.136.126.41), 01/20/2015 17:23:13
→
01/20 17:41, , 1F
01/20 17:41, 1F
推
01/20 17:45, , 2F
01/20 17:45, 2F
→
01/20 17:46, , 3F
01/20 17:46, 3F
推
01/21 19:00, , 4F
01/21 19:00, 4F
→
01/21 20:56, , 5F
01/21 20:56, 5F
推
01/21 21:40, , 6F
01/21 21:40, 6F
→
01/21 21:41, , 7F
01/21 21:41, 7F
→
01/21 21:42, , 8F
01/21 21:42, 8F
→
01/21 21:42, , 9F
01/21 21:42, 9F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章