作为一个小白在定义函数时使用到了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中只有两个字符串
这种情况也会引发上面的错误。
就在这做个记录,以防以后再犯这种错误。