簡體   English   中英

C ++ STL訪問向量元素

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

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