[英]Why does the call to std::vector::back() crash my program
我不確定這段代碼有什么問題:
std::vector<int> myVector(0);
if (myVector.back() == 12)
myVector.push_back(12);
似乎在空向量上調用back()會使程序崩潰。
我不明白為什么會崩潰? 在調用back()
之前我們需要檢查向量的長度嗎? 或者可能是一個錯誤?
文檔說,如果向量為空,則返回未定義的值。
在調用back()之前我們需要檢查向量的長度嗎?
總之一句:是的。 這是你的錯誤,你的向量是空的,所以沒有“后退”元素。
文檔應該說(如果它說的話),在空向量上調用back()
會導致未定義的行為 ,而不是返回未定義的值。
c ++ 11標准告訴我:
23.3.2.8 / 3
對於零大小的數組調用front()或back()的效果是未定義的。
由於行為未定義,任何事情都可能發生。 你很幸運遇到了崩潰。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.