vector声明二维数组的一些问题

vector实现二维数组结构时时,常用的做法有一下几个:

vector<int> studentNums;     //声明一个一维的int类型向量

vector<int> studentNums(7);//声明一个元素个数为7的,初始化为0的int类型向量

vector<int> studentNums(7,1);//声明一个元素个数为7的,初始化为1的int类型向量



上面是一维数组结构的声明方式,但是当声明二维数组时,就有些小细节需要注意了。正常情况下声明如下:

vector<vector<int>  >studentNums;

这种形式声明的二维数组在进行访问的时候会出现如下问题:

for(int i=0;i<studentNums.size();i++)
        {
            for(int j=0;j<studentNums[0].size();j++)
            {
                cout<<i<<" "<<j<<endl;
                studentNums[ (i*n+j)/c ].push_back(nums[i][j]);
            }
            
        }

会出现内存溢出的情况。

当声明为

vector<vector<int>  >studentNums(x);//x为函数外部输入的量

内存溢出的问题就没有了。

也就是说声明二维数组时候,行数是必须要初始化的。这一点切记。

另外也查阅了一下studentNums.size()这个函数返回值类型。大部分情况下都为unsigned int

如果不确定,可以用typeid(    ).name()这个函数来查询。用法如下:

typeid(   表达式 ).name();

该语句返回表达式结果的类型。


  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值