一、问题
所有类似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的时候注意一下这个!!!