調bug:terminating with uncaught exception of type std::out_of_range: vector Abort trap: 6

 折騰了好久,終於清楚具體原因了!

從執行的異常提示上看是vector越界了,但查了很久沒有定位到是哪個vector變量。

在中斷位置前後都寫類printf,找到了中斷的函數,還在函數內寫了打印,發現函數壓根沒進去。就奇怪了,怎麼回進不去,沒有其他線程,不會是其他地方引起奔潰。這時候本應該早點想起查看一下函數的輸入,輸入不正確就進不了函數,但從來幾乎沒遇到過輸入引起函數無法進入的情況,所以沒有想起查看輸入。

輸入是一個vector類型,錯誤的原因是訪問方法有問題。

vector有多種訪問方法,可以直接按照數組的方式,如vec變量,vec[0],也可以使用方法at(),vec.at(0)。這兩種方法方式就有不同了。如果vec恰好爲空,按照數組的方式訪問第0個元素不會認爲這種訪問方式有誤,但第二種使用at方法訪問就出現上述越界的錯誤了!!

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