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中只有兩個字符串

這種情況也會引發上面的錯誤。
就在這做個記錄,以防以後再犯這種錯誤。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章