簡體   English   中英

為什么調用std :: vector :: back()會導致我的程序崩潰

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM