C++:使用Vector报错:未处理的异常 std::out of range

作为一个小白在定义函数时使用到了vector,使用的时候差不多如下:

void abc(vector<double>a1,vector<double>a2,vector<double>a3)
{
	for(int i=0;i<a1.size();i++)
	{
		a3[i]=a1[i]+a2[i];
	}
}

大概意思就是这样,在使用这个函数的时候就报错:c++报错0x74334622 处有未经处理的异常: Microsoft C++ 异常: std::out_of_range,位于内存位置 0x00C0EEC8 处.
在调试了一会查了一些资料以后发现最终的问题是出现在使用vector容器时用法不对,vector容器在函数中使用时,由于内部还没有内容,是不能对其直接进行赋值的,看完解释以后也是恍然大悟,低级错误。
将上面for循环中的语句改成如下就可以了:

		a3.push_back(a1[i]+a2[i]);

这样改完以后就可以了,看完解释的我眼泪掉下来,哈哈哈,这简直是超级低级的错误。

还有一种可能就是实际使用的本次投入大小超出了定义的vector大小,如下:

vector<string>s1;
cout<<s1.at(3);//而实际的vector中只有两个字符串

这种情况也会引发上面的错误。
就在这做个记录,以防以后再犯这种错误。

发布了17 篇原创文章 · 获赞 25 · 访问量 5651

猜你喜欢

转载自blog.csdn.net/qq_44894692/article/details/104315440
今日推荐