[問題] 1維動態陣列 配上 linklist

看板C_and_CPP作者 (coal)時間13年前 (2012/07/27 16:01), 編輯推噓1(1026)
留言27則, 4人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) VC++ 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) 沒有 問題(Question): 我想要使用1維動態陣列配上linklist 可是VC 會顯示錯誤訊息 : list *block Error: 運算是必須要有指標型別 程式碼(Code): 以下是 list的宣告: class list{ private: struct record_data{ int data; record_data *next; }; record_data *root; public: list(){ root = NULL; } }; ------------------------------------------- 然後有個 Class block_dir{.....(有一些function) }; 關鍵的部分: void block_dir::initial_function( int in_size ){ list *block = new list [in_size]; for( int i = 0; i < in_size; i++){ block[ i ]->data = i; //這裡會顯示錯誤訊息 } } 補充說明(Supplement): 我想要以此建構出以下效果: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] | | | | | | | | | | V V V V V V V V V V //v為箭頭 0 1 2 3 4 5 6 7 8 9 | | | | | | | | | | V V V V V V V V V V NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 想請教版上大大 到底使哪邊與法錯誤呢? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 1.164.156.105

07/27 16:05, , 1F
問題滿多的
07/27 16:05, 1F

07/27 16:06, , 2F
1. 那一行你應該是想寫 block[i]->(某個東西) = i 吧
07/27 16:06, 2F
※ 編輯: coal511464 來自: 1.164.156.105 (07/27 16:07)

07/27 16:07, , 3F
2. block[i]是一個list*,list裡面並沒有member叫data
07/27 16:07, 3F

07/27 16:08, , 4F
第一點筆誤 改回來了 謝謝
07/27 16:08, 4F

07/27 16:08, , 5F
所以你可能要用的是block[i]->root->data = i
07/27 16:08, 5F

07/27 16:09, , 6F
不過上面那行還是有幾個錯誤,首先是root是空指標
07/27 16:09, 6F

07/27 16:10, , 7F
你可能會想在某個地方先讓root =new list::record_data
07/27 16:10, 7F

07/27 16:10, , 8F
再來就是以上都假設所有資料都是public, 但顯然不是
07/27 16:10, 8F

07/27 16:10, , 9F
所以list應該要有相關的getter/setter
07/27 16:10, 9F

07/27 16:15, , 10F
呃 剛看錯一個地方 block[i]是list不是list
07/27 16:15, 10F

07/27 16:15, , 11F
block[i]是list不是list*
07/27 16:15, 11F

07/27 16:15, , 12F
所以應該是block[i].(某個東西) = i
07/27 16:15, 12F

07/27 16:21, , 13F
record_data *block = new record_data [in_size];
07/27 16:21, 13F

07/27 16:22, , 14F
我改成這樣 可是會說 record_data 未定義
07/27 16:22, 14F

07/27 16:27, , 15F
因為record_data是list的私有成員 block_dir看不到它
07/27 16:27, 15F

07/27 16:27, , 16F
我覺得你要先釐清你打算做什麼、以及每個物件代表什麼
07/27 16:27, 16F

07/27 16:28, , 17F
我看不懂你是想創造一個包含許多list的陣列 還是只是想
07/27 16:28, 17F

07/27 16:29, , 18F
一次初始化一個list中的許多元素
07/27 16:29, 18F

07/27 16:38, , 19F
其實是ACM 101題....
07/27 16:38, 19F

07/27 16:40, , 20F
初始化的示意圖大概就像我劃的那樣
07/27 16:40, 20F
※ 編輯: coal511464 來自: 1.164.156.105 (07/27 16:41)

07/27 16:47, , 21F
所以應該是list的陣列 不會是record_data的陣列啊
07/27 16:47, 21F

07/27 16:48, , 22F
話說你可以研究一下std的list 自己刻輪子也太累了
07/27 16:48, 22F

07/27 16:52, , 23F
#include<list> 不會用= =.....
07/27 16:52, 23F

07/27 16:55, , 24F
ˊ_>ˋ 讀書啊
07/27 16:55, 24F

07/27 17:10, , 25F
學會使用std的時間,絕對比刻一個還快很多.
07/27 17:10, 25F

07/27 17:12, , 26F

07/27 17:12, , 27F
都有範例能看啊= =
07/27 17:12, 27F
文章代碼(AID): #1G4ahM_Y (C_and_CPP)