今天在写leetcode的第47题时,遇到一个报错,如下:
runtime error: reference binding to null pointer of type 'value_type' (stl_vector.h)
这个报错提示,对vector容器的使用发生了错误,可能发生了数组越界,但我仔细检查了一下代码,并没有发生数组越界的情况,所以就在网上查了一下,发现还有一种原因:
使用vector时并没有申请空间
这究竟是怎么一回事,之前用vector时一直没有发生错误,所以我对比了47题的代码与之前用过vector的代码,发现在写47题时,是把vector当成数组用的:
vector<int> now;
...
now[i] = nums[step];
其实,这个错误非常明显,你并没有告诉计算机now的长度,计算机根本不认识now[ i],
所以我们在把vector当成数组使用时,我们需要向数组那样先声明一下数组的长度,于是,只要加上一句:
now = vector<int>(n);
//n为数组的长度
之前在使用vector时,只用到了(push_back,pop_back...几个不需要申请空间的操作),
所以没有发生报错。
总结
出现这个错误的原因我觉得有两点:
1.写的题目太少了,没有及时总结
2.对STL的几个工具使用理解太浅显,只会基本操作,今后还有多多使用,熟能生巧,多多总结,可以避免踩坑。












网友评论