[英]C++ STL accessing vector element
vector.at(i)
和vector[i]
什么區別?
vector<int> myVector(6);
myVector.at(5) = 5;
要么
myVector[5] = 5;
我知道兩者都會產生相同的結果,但是以某種方式,operator []
會更快。 此外,我閱讀有關at
檢查矢量的大小(邊界),並返回出界錯誤的 ,而[]
沒有。
但是我看到,如果嘗試分配:
myVector[8] = 1;
在調試模式下,我收到類似的超出范圍錯誤。
那么at
的含義是什么? 為什么在STL中?
std::vector
operator []
將返回對內存區域的引用,無論是否為向量分配了該引用。 訪問未分配的內存區域是未定義行為,而at
會在發生任何異常之前引發異常。 就像@JoachimPileborg在評論中說的那樣, operator []
的未指定行為包括拋出異常。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.