Re: [問題] 請問 vector的二維以上宣告方式

看板EE_DSnP作者 (Ric)時間17年前 (2007/12/17 22:17), 編輯推噓2(205)
留言7則, 3人參與, 最新討論串2/2 (看更多)
※ 引述《popo4231 (小泰)》之銘言: : 標題: [問題] 請問 vector的二維以上宣告方式 : 時間: Mon Dec 17 18:27:00 2007 : : 我試過二維的 : vector< vector<int> > arr(10,10); : 可是三維的好像就掛了 : 請問該怎麼弄呢? : : -- : ※ 發信站: 批踢踢實業坊(ptt.cc) : ◆ From: 140.112.241.177 : 推 ric2k1:vector(n, t): Creates a vector with n copies of t 12/17 22:01 : 推 ric2k1:並不是 create 二維陣列喔!! 12/17 22:01 你這樣子正好可以宣告成二維陣列是因為 vector 的 constructor vector(size_type n, const T& t) 的意思是: Creates a vector with n copies of t 當你傳入 vector< vector<int> > arr(10,10) 時, 第一個 10 (n) create 了 10 份 copies of vector<int>, 而每一份 vector<int> 又吃進第二個 10 (t) 給他的 constructor: vector(size_type n) : Creates a vector with n elements. 所以在第二維產生了 size = 10 的 vector<int>. 這是剛好這樣, 其實對 vector 而言這樣宣告二維陣列比較奇怪. 至於三維陣列, 由於 vector 沒有傳三個參數的 constructor, 所以當然不能這麼用囉! For STL, 請多加利用 SGI 的網站: http://www.sgi.com/tech/stl/ 選擇 Table of contents. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.121.134.219

12/17 23:53, , 1F
那要怎麼宣告比較對? vector就不能夠操縱三維的陣列了嗎?
12/17 23:53, 1F

12/17 23:57, , 2F
vector< vector< vector<int> > > 然後開迴圈慢慢push_back
12/17 23:57, 2F

12/17 23:58, , 3F
不過可能乾脆開一維vector 再自己算3D->1D的對應比較快
12/17 23:58, 3F

12/18 01:57, , 4F
首先要確認你的 array size 是否會變? 是否同一維中會有
12/18 01:57, 4F

12/18 01:58, , 5F
大小不一的情況, 若是, 則用 vector<vector<vector...
12/18 01:58, 5F

12/18 01:59, , 6F
否則就用 static array int arr[][][] 吧!
12/18 01:59, 6F

12/18 02:00, , 7F
這樣也不用去算 3D --> 1D 的對應...
12/18 02:00, 7F
文章代碼(AID): #17PeK0cE (EE_DSnP)
文章代碼(AID): #17PeK0cE (EE_DSnP)