怎么用vector处理二维数组

renmin8wg 2010-02-08 06:43:02

我只知道vector<int> a 相当与一维数组,二维怎么用怎么往里面输入输出数据?难道是 vector< vector<int> > 怎么用啊怎么向里面输入数据呢?

...全文
2124 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
jiannan86 2010-03-30
  • 打赏
  • 举报
回复
对我非常有用!
膜拜中!
xboy 2010-02-09
  • 打赏
  • 举报
回复
好像最后把我的}吃掉了,自己补上吧
xboy 2010-02-09
  • 打赏
  • 举报
回复
重新贴一下:

#include <iostream>
#include <vector>
using namespace std;

void initV2D(int m,int n,vector<vector <int> > &myV2D)
{

myV2D.resize(m);

for (int i=0;i<m;i++)
{
myV2D[i].resize(n);
for (int j=0;j<n;j++)
{
myV2D[i][j] = i*j;//初始化每行的元素
}
}

}

void V2DPrint(int m,int n,vector<vector <int> > &myV2D)
{

for (int i=0;i<m;i++)
{
for (int j=0;j<m;j++)
{
printf("%5d",myV2D[i][j]);
}
printf("\n");
}

}

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

initV2D(9,9,V2D);//经过这一步之后,你直接把v2d当做普通二维数组去用好了,当然作为参数时需要注意一下
V2DPrint(9,9,V2D);

system("pause");
return 0;

xboy 2010-02-09
  • 打赏
  • 举报
回复
之前刚好做了个东西用到了二维vector,论坛里面关于 vector的帖子很多,但是关于怎么去动态初始化2D的vector貌似找不到很好的例子,尤其是当你完全希望把vector用来做二维数组时。
呵呵,可以参考如下代码,我还是习惯动态初始化2D的vector之后把他拿来当普通2D数组来用
==========================================

#include <iostream>
#include <vector>
using namespace std;

vector<vector <int> > V2D;

void initV2D(int m,int n,vector<vector <int> > &myV2D)
{

myV2D.resize(m);

for (int i=0;i<m;i++)
{
myV2D[i].resize(n);
for (int j=0;j<n;j++)
{
myV2D[i][j] = i*j;//初始化每行的元素
}
}

}

void V2DPrint(int m,int n,vector<vector <int> > &myV2D)
{

for (int i=0;i<m;i++)
{
for (int j=0;j<m;j++)
{
printf("%5d",myV2D[i][j]);
}
printf("\n");
}

}

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

initV2D(9,9,V2D);//经过这一步之后,你直接把v2d当做普通二维数组去用好了,当然作为参数时需要注意一下
V2DPrint(9,9,V2D);

system("pause");
return 0;

}
BillLeecn 2010-02-09
  • 打赏
  • 举报
回复
没错呀,如果太难看可以先
typedef Matrix vector<vector<int>>;

然后就可以直接用Matrix 声明变量
wanghj_1118 2010-02-08
  • 打赏
  • 举报
回复
学习了```
为自己加油```
dqdx_zch 2010-02-08
  • 打赏
  • 举报
回复
以后要注意,不能相信自己的记忆。
我仔细解释下吧:
vector < vector <int> > a(3);
这句话的意思是初始化3个vector类型的向量,像这样的定义是一种模板。
形象的比喻下,就是3个vector类型的向量,是装vector<int>类型的元素的
所以,每一个a[i]的类型为vector<int>,这样a[i].push_back(0)就是在a[i]的后面添加个元素
所以有如下代码:
#include "stdafx.h"
#include <iostream>
#include <vector>
using namespace std;


int main()
{
vector< vector<int> > a(20);
for(int i = 0; i < 20; i++)
{
for(int j = 0; j < 20; j++)
{
a[i].push_back(i*j);
}
}
for(int i = 0; i < 20; i++)
{
for(int j = 0; j < 20; j++)
{
cout << a[i][j] << " " ;
}
cout << endl;
}
return 0;
}
dqdx_zch 2010-02-08
  • 打赏
  • 举报
回复
vector < vector <int> > a[20];
更正一下,vector < vector <int> > a(20);
这里要用园括号
wanjingwei 2010-02-08
  • 打赏
  • 举报
回复
vector<vector<int> >vec;
vector<int> vecsize;
for(int i=0;i<3;i++)
{

for(int j=0;j<2;j++)
vecsize.push_back(i*j);
vec.push_back(vecsize);
vecsize.erase(vecsize.begin(),vecsize.end());
}
for(int i=0;i<3;i++)
{
for(int j=0;j<2;j++)
cout<<vec[i][j]<<" ";
cout<<endl;
}
dqdx_zch 2010-02-08
  • 打赏
  • 举报
回复
for(int i = 0; i < 20; i++)
{
for(int j = 0; j < 20; j++)
a[i].push_back(i*j);
}
这样就比较清楚了。
a[i][j] = i*j了
dqdx_zch 2010-02-08
  • 打赏
  • 举报
回复
vector < vector <int> > a[20];
则定义了20vector<int>类型的vector的变量
每个a[i]为vector<int>,
例如:a[0].push_back(1);
则a[0][0]就为1
stardust20 2010-02-08
  • 打赏
  • 举报
回复
引用 3 楼 stardust20 的回复:
就是vector < vector <int> >。。你可以把一个vector <int>的东西push_back进一个vector < vector <int> >一个就可以了。。。如:vector < vector <int> > v;
vector <int> a; v.push_back(v);

上面不小心打错了。。是v.push_back(a);
stardust20 2010-02-08
  • 打赏
  • 举报
回复
就是vector < vector <int> >。。你可以把一个vector <int>的东西push_back进一个vector < vector <int> >一个就可以了。。。如:vector < vector <int> > v;
vector <int> a; v.push_back(v);
adventurelw 2010-02-08
  • 打赏
  • 举报
回复
假设
std::vector<std::vector<int> > darr(n);//声明一个n行的二维数组
for(int i = 0; i < n; ++i)
for(//一些循环条件)
darr[i].push_back(val);//为每一行添加数据,添加的列数由第二个for循环次数决定,当然,也有其他方法来决定,比如直接resize。
wuyu637 2010-02-08
  • 打赏
  • 举报
回复
1.vector<int*> pPint;

vector< int> pPintSize;
=========================

2, vector<vector<int> > 也是可以的。

64,652

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧