一、问题

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

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐