作者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