怎么用C++中的Vector来代替 声明 数组中的 2维数组??

怎么用C++中的Vector来声明一个2维数组?例如用数组声明:inta[65][65]={0};或声明:constintb=65inta[b][b]={0};以上这2种... 怎么用C++中的Vector来声明 一个2维数组?
例如用数组声明:int a[65][65]={0};
或声明: const int b=65 int a[b][b]={0};
以上这2种方式 是用数组 实现声明的。 用vector 该怎么描述呢??
展开
 我来答
bloodelf02
推荐于2016-03-05 · TA获得超过1657个赞
知道小有建树答主
回答量:328
采纳率:0%
帮助的人:490万
展开全部
vector里面嵌套vector就可以了。

如下:(x就是有65个vector<int>的相当于2维数组的玩意儿)

#include <vector>
#include <iostream>

using std::vector;
using std::cout;
using std::endl;

int main()
{
vector<vector<int> > x;

for (int i = 0; i < 65; ++i)
{
x.push_back(vector<int>(65));
}

int count = 0;
for (int i = 0; i < x.size(); ++i)
{
for (int j = 0; j < x[i].size(); ++j)
{
cout << x[i][j] << endl;
++count;
}
}

cout << "Count is :" << count << endl;
}

同时请主意,这个和2维数组有个很大的不同就是,它的任意两个一维数组都几乎不是连续存储的。(相信你应该理解2维数组是由很多个连续存储的一维数组构成的)。

举个例子就是在你的二维数组里, a[0][64]和 a[1][0] 在内存里是紧挨的, 我的vector的 x[0][64] 和 x[1][0]就不是。

如:

#include <vector>
#include <iostream>

using std::vector;
using std::cout;
using std::endl;

int main()
{
int a[65][65] = {0};

vector<vector<int> > x;

// 使x成为类似a[65][65]
for (int i = 0; i < 65; ++i)
{
x.push_back(vector<int>(65));
}

cout << "Address of a[0][64]:" << &a[0][64] << endl;
cout << "Address of a[1][0]:" << &a[1][0] << endl;
cout << "Address of x[0][64]:" << &x[0][64] << endl;
cout << "Address of x[1][0]:" << &x[1][0] << endl;
}

参考资料: my smart brain, 同时庆祝我c++问题的采纳率终于突破了50% !!

索小彬bX
2010-08-17
知道答主
回答量:8
采纳率:0%
帮助的人:3.8万
展开全部
采用vector嵌套 比如 vector< vector <int> > v
采用这种方法 相当于是动态的二维数组
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
工藤某某
2015-08-24 · TA获得超过104个赞
知道小有建树答主
回答量:122
采纳率:0%
帮助的人:68.3万
展开全部
定义:
vector<vector <int> > d(1000);

调用:
d[3].push_back(3);
cout<<d[3][0]<<endl;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zcanew
2010-08-16 · 超过13用户采纳过TA的回答
知道答主
回答量:57
采纳率:0%
帮助的人:38.8万
展开全部
vector<vector<e_type>> 即可
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式