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中只有两个字符串

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

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GISerQ.

你的鼓励将是我创作的最大动力。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值