看板 C_and_CPP 關於我們 聯絡資訊
不好意思,我是剛學C++的新手,問題可能很基本 我寫了一個函式大概長這樣 int* Preprocess(int a[], int n) { int* sparse = new int[n][floor(log(n)/log(2) )+ 1]; ................... return sparse; } 請問應該在什麼時候用delete,可以在函式外面嗎 還有我查了很多回傳陣列的方法,有些說這個寫法不好,請問通常應該會怎麼寫 先謝謝大家 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.228.183.154 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1489323836.A.2A6.html
LPH66: 原則上可以但建議不要, 因為你不會時常檢查有沒有刪 03/12 21:12
LPH66: 稍微好一點的方法是再寫一個負責刪的, 然後要刪時記得呼叫 03/12 21:12
LPH66: 更好一點的是用一個類別把它封起來, 這裡你有 vector 能用 03/12 21:13
LPH66: 不管如何, 這部份請去找你學程式的地方一定有說明 03/12 21:14
loveflames: 這裡說一下,函數不能返回陣列,陣列不能是函數參數 03/12 21:15
loveflames: 作為參數會轉成指標 03/12 21:16
loveflames: 不過你可以傳陣列的參考 03/12 21:16
loveflames: 回到主題,我覺得你可以參考RAII 03/12 21:22
james732: 新手就會寫看起來這麼深奧的程式啊... 03/12 21:31
loveflames: 先釐清函數怎麼用陣列,比delete時機重要多啦 03/12 21:35
lovejomi: 這樣new 是錯的吧 03/13 09:52
Sidney0503: 去看RAII+1 03/13 10:33
loveflames: 話說初學者直接用vector最省事 03/13 12:16
worcdlo: 我倒是覺得初學者就是要學著怎麼寫各種結構 vector刷 03/13 12:59
worcdlo: LeetCode時再用就好 03/13 13:00
ronin728: 如果要用純C風格,這函數應該還要再分開成分配資料用的 03/13 14:17
ronin728: 還有計算處理資料用的,這樣分開會比較好 03/13 14:18
grayStone: unique _ptr 03/13 22:19