作者ric2k1 (Ric)
看板EE_DSnP
標題Re: [問題] 請問 vector的二維以上宣告方式
時間Mon Dec 17 22:17:35 2007
※ 引述《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
1F:推 popo4231:那要怎麼宣告比較對? vector就不能夠操縱三維的陣列了嗎? 12/17 23:53
2F:推 timrau:vector< vector< vector<int> > > 然後開迴圈慢慢push_back 12/17 23:57
3F:→ timrau:不過可能乾脆開一維vector 再自己算3D->1D的對應比較快 12/17 23:58
4F:→ ric2k1:首先要確認你的 array size 是否會變? 是否同一維中會有 12/18 01:57
5F:→ ric2k1:大小不一的情況, 若是, 則用 vector<vector<vector... 12/18 01:58
6F:→ ric2k1:否則就用 static array int arr[][][] 吧! 12/18 01:59
7F:→ ric2k1:這樣也不用去算 3D --> 1D 的對應... 12/18 02:00