一、Vector简介
今天在做力扣上螺旋矩阵这道题目的时候,我用的是vector容器把结果存储在里面,在这里
简单的介绍一下vector,vector是C++标准模板库中的容器类,提供了一个动态数组的实现,可以
方便我们存储和管理元素的集合,下面简要的介绍一下vector容器的特点。
1、动态大小:可以根据需要动态的调整大小,无需手动的管理内存。
2、连续性:vector和数组存储的元素是一样的,都是连续的,通过下标可以找到相应的元素。
3、普适性:std::vector具有普遍适用性,可以用来存储不同数据类型,比如浮点型,整型,字符
型,还有我们自己定义的结构类型等等。
#include<iostream>
using namespace std;
int main(){
vector<int>ret;
ret.push_back(1); //在数组尾部添加值为1的元素
ret.emplace_back(2); //在数组尾部添加值为2的元素
ret.begin(); //表示的是数组的第一个元素,
ret.end(); //表示的是最后一个元素的后一个位置
}
二、出现问题的原因
上面的意思是引用绑定了int类型的空指针,说明出现了越界的情况,在上面我们已经说了
vector与数组的功能几乎是一样的,例如存储也是从下标0开始存储的,如果出现vector[-1],编译
的时候不会出现错误,但是运行的时候会出现错误,数组越界了。这个错误通常是由于对空指针进
行引用操作导致的。在STL vector容器中,当你尝试访问一个不存在的元素时,就会出现这个错
误。这个错误的解决方案通常是检查你的代码,确保你没有尝试访问一个不存在的元素。你可以使
用vector的size()函数来检查vector的大小,以确保你不会访问不存在的元素。此外,你还可以使用
迭代器来遍历vector,以确保你不会访问不存在的元素。
对应的解决办法就是先判断一下数组是否为空,如果不为空就不会出现上述的错误,
if(ret.empty()) return {};