[問題] shared_ptr 指向 vector

看板C_and_CPP作者 (shihyu)時間6年前 (2017/10/02 03:55), 6年前編輯推噓1(1015)
留言16則, 4人參與, 6年前最新討論串1/1
開發平台(Platform): (Ex: Win10, Linux, ...) Linux 編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出) g++ https://gist.github.com/anonymous/cae972cc0cb32f1055a145b27bfd11b7 我new 出一個二維vector 讓 shared_ptr 指標接住 shared_ptr<std::vector<std::vector<double> > > p2 = NULL; p2 = shared_ptr<std::vector<std::vector<double> > >(new std::vector<std::vector<double> >(M, std::vector<double>(N, K))); 那我想傳遞某一列Row 到另外一個函數做處裡 void arraycopy(std::shared_ptr<std::vector<double> > row) { } 我測試下面用法都不可以! //arraycopy((*p2)[0]); //arraycopy((p2)[0]); //arraycopy((p2)->at(0)); 想請問一下要怎麼改寫才符合我需求? 我需求是 1. 宣告出一個二維的vector 包在 shared_ptr 裡面 2. 有個 arraycopy函數將上面的包在shared_ptr 二維 vector 傳入 某一列到arraycopy函數做處理...但是必須是傳address 進來改在同一塊記憶體 不是deep copy... 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 175.181.254.11 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1506887728.A.492.html

10/02 04:48, 6年前 , 1F
我覺得你有XY problem 應該先問你想做什麼?
10/02 04:48, 1F
※ 編輯: shihyu (175.181.254.11), 10/02/2017 05:10:19

10/02 05:15, 6年前 , 2F
arrarcopy改成收std::vector<double>&就好了吧
10/02 05:15, 2F

10/02 05:16, 6年前 , 3F
vector<vector<double>>裡面的vector<double>的生命週期是由
10/02 05:16, 3F

10/02 05:16, 6年前 , 4F
外層的vector管理的
10/02 05:16, 4F

10/02 05:27, 6年前 , 5F
OK了...感謝
10/02 05:27, 5F

10/02 07:52, 6年前 , 6F
那個, 一樓提的你還是仔細想一下
10/02 07:52, 6F

10/02 07:53, 6年前 , 7F
所謂 XY Problem 是指說你想做 X, 你用了解法 Y 但有問題
10/02 07:53, 7F

10/02 07:53, 6年前 , 8F
所以你跑上來問 Y, 但事實上你應該要回頭檢查為何選擇 Y
10/02 07:53, 8F

10/02 07:55, 6年前 , 9F
是不是在一個更高層次上為了解決 X 你該用其他東西
10/02 07:55, 9F

10/02 07:56, 6年前 , 10F
這一點其實我之前回你的文時就有暗示過了...
10/02 07:56, 10F

10/02 07:59, 6年前 , 11F
以你後來編輯的東西來看, 那個 arraycopy 感覺滿微妙的
10/02 07:59, 11F

10/02 08:00, 6年前 , 12F
一般會改動 vector 陣列內容的函式常傳參考
10/02 08:00, 12F

10/02 08:00, 6年前 , 13F
而不是再外掛一個 new/delete/shard_ptr/等等 做資源管理
10/02 08:00, 13F

10/02 08:34, 6年前 , 14F
主要就是因為先前我有提過 vector 本身就是動態配置了
10/02 08:34, 14F

10/02 08:34, 6年前 , 15F
再在這上面包另外一個動態配置有疊床架屋的感覺
10/02 08:34, 15F

10/02 23:26, 6年前 , 16F
搞不好原po會回你“我就是想動態配置啊”
10/02 23:26, 16F
文章代碼(AID): #1PqKWmII (C_and_CPP)