打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
vector<vector<int>作为二维数组

[转载] http://bbs.csdn.net/topics/10278514
vector本来就是可以用来代替一维数组的,vector提供了operator[]函数,可以像数组一样的操作,而且还有边界检查,动态改变大小。
这里只介绍用它来代替二维的数组,二维以上的可以依此类推。。

1、定义二维vector

C++的template参数是可以嵌套定义的,你可以这样定义一个模板的Instance

vector<vector<int>  > array2(3);//注意>和>之间的空格。
  • 1

array2可以保存3个向量,向量的长度是可以改变的。array2[i]返回的是第i个向量。同理,array2[i][j]返回的是第i个向量中的第j个元素

2、访问二维vector的元素

下边没有指定向量的大小,也没有去初始化,就访问,程序会segement failed。

     vector<vector<int>  > array2(3);     array2[1][2]=9;
  • 1
  • 2

可用push_back函数可以解决问题:

array2[1].push_back(9);
  • 1

只要提前设定好每行vector的大小,就可用operator[]访问,如下:

      for(int i=0;i<3;i++)         array2[i].resize(3);
  • 1
  • 2

现在,你就定义了一个3X3的数组了(另一个3是在声明时定义的)。而且你可以随时改变它的大小。

2、访问二维vector的元素

下面提供一个范例,供参考。

//在VC下会有变量定义问题,大家自己解决

  #include <iostream>  #include <vector>  using namespace std;  void main()  {      vector< vector<int> > array(3);      for(int i=0;i<3;i++)        array[i].resize(3);//设置数组的大小3X3         //现在你可以和使用数组一样使用这个vector      for(int i=0;i<3;i++)        for(int j=0;j<3;j++)          array[i][j]=(i*j);      //输出      for(int i=0;i<3;i++)      {         for(int j=0;j<3;j++)           cout<<array[i][j]<<" ";         cout<<endl;       }     array.resize(5);     arry[3].resize(3);     arry[4].resize(3);      //现在是5X3的数组了      for(int i=0;i<5;i++)         for(int j=0;j<3;j++)            array[i][j]=(i*j);      for(int i=0;i<5;i++)      {         for(int j=0;j<3;j++)            cout<<array[i][j]<<" ";        cout<<endl;      }  }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
用vector解决c++中动态生成二维数组[转]
Vector<vector<int>> array用法(转载)
C++ Primer第三章字符串,向量和数组习题
C++动态数组
学习C++
C++中二维数组new小结
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服