所有类似runtime error: reference binding to null pointer of type ‘int‘ (stl_vector.h)的报错,都可以来看看

一、问题

所有类似runtime error: reference binding to null pointer of type 'int' (stl_vector.h)的报错,新手都可以来看看这种忽略了vector容器注意事项而报的错

二、可能的原因和解决方案:

vector越界访问v[-1]或者v[size()]的情况就不说了!看下面!!!!

报错原因:vector在还没有分配任何空间时还不能像数组一样用下标形式去访问vector的(v[0]也不行)!!!否则编译通过但报运行错误runtime error!

vector创建的时候是使用:

vector<int> v;

或者vector还是[]的时候(考虑官方测试数据的输入可能为[]的情况,使用[ ]前需要判断一下是否为空)

会报错!

如:v[0]=1、if(v[0])、v[0]等情况都会报错,

我们都知道数组是静态分配内存,创建时就要确定大小然后给它分配空间不然直接编译报错,但vector是动态数组,像"vector<int>  v"这种跳过分配空间的创建方式是允许的,编译器不会报错,但会运行报错即runtime error。

这种情况需要先push_back()或v={1,2}等形式给其分配了空间后,才能用【】形式访问!

在网上找了一些出现这样类似报错的文章都没有写出真正原因,所以今天写一下。

头一次写这玩样,大家体谅一下排版较乱、表达不清、表述有误、知识扩展不足等情况!反正只是想告诉新手使用vector的时候注意一下这个!!!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值