作爲一個小白在定義函數時使用到了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中只有兩個字符串
這種情況也會引發上面的錯誤。
就在這做個記錄,以防以後再犯這種錯誤。