vector<vector<int>作为二维数组

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

1、定义二维vector

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

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

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

2、访问二维vector的元素

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

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

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

array2[1].push_back(9);

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

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

现在,你就定义了一个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;
      }
  }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值