怎样用vector实现多维数组?

chngok 2003-12-19 01:02:38
怎样用vector实现多维数组?
用内置数组可以实现多维数组,例如:int a[5][6];
利用标准容器如vector怎么实现多维数组啊??
...全文
367 点赞 收藏 10
写回复
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
hifrog 2003-12-19
有空格是和重载">>"的方法产生冲突。

结贴:
我的问题->点帖子后的“管理”。
回复
hanyixin 2003-12-19

token的读入是采用贪心法,尽可能的读取多的字符到一个token中,所以没有空格的话,
vector<vector<int>> vvi;会被认为int后面跟了一个>>符号。

回复
chngok 2003-12-19
非常谢谢大家,怎么给分啊?好像没有给分的按钮
回复
hifrog 2003-12-19
给你来个三维的:)
以下是一个变长三维数组:

//文件名: array06.cpp
#include <iostream>
#include <vector>
#include <iomanip>
using namespace std;
int main()
{
int i,
j,
k,
m, //一维坐标
n, //二维坐标
l; //三维坐标


cout << "input value for m,n,l:";
cin>>m>>n>>l;
vector<vector<vector<int> > > vecInt(m, vector<vector<int> >(n, vector<int>(l)));
for (i = 0; i < m; i++)
for (j = 0; j < n; j++)
for(k = 0; k < l; k++)
vecInt[i][j][k] = i+j+k;

for (i = 0; i < m; i++)
{
for (j = 0; j < n; j++)
{
for(k = 0; k<l; k++)
cout<<setw(5)<<vecInt[i][j][k]<<":"<<setw(9)<<&vecInt[i][j][k];
cout<<endl;
}
cout<<endl;
}

return 0;
}

运行结果:
input value for m,n,l:2 3 4
0: 00492FE0 1: 00492FE4 2: 00492FE8 3: 00492FEC
1: 00492FA0 2: 00492FA4 3: 00492FA8 4: 00492FAC
2: 00492F60 3: 00492F64 4: 00492F68 5: 00492F6C

1: 00492EC0 2: 00492EC4 3: 00492EC8 4: 00492ECC
2: 00492E80 3: 00492E84 4: 00492E88 5: 00492E8C
3: 00492E40 4: 00492E44 5: 00492E48 6: 00492E4C

Press any key to continue

你可以查看我的文章:
http://www.csdn.net/develop/article/22/22669.shtm
回复
qiaojicheng 2003-12-19
hanyixin(怡) 所说的对,只是奇怪从语法上讲为什么那里需要一个空格呢?
回复
hanyixin 2003-12-19
vector<vector<int> >vvi;
这里要有个空格
回复
qiaojicheng 2003-12-19
这样可以vector <int> a[];
回复
chngok 2003-12-19
我试了,不行,编译都通不过。
回复
qiaojicheng 2003-12-19
sorry,好像 不行。
回复
qiaojicheng 2003-12-19
使用vector嵌套来实现吧。试一下看看,没有用过。
回复
发动态
发帖子
工具平台和程序库
创建于2007-09-28

2.4w+

社区成员

C/C++ 工具平台和程序库
申请成为版主
社区公告
暂无公告