string和vector下標運算子
阿新 • • 發佈:2019-02-03
vector的size函式返回vector物件中元素的個數,返回值的型別由vector定義的size_type型別。要使用size_type,需首先指定它是由哪種型別定義的。vector物件的型別總是包含著元素的型別:
vector<int>::size_type //正確
vector::size_type //錯誤
string物件和vector物件的下標運算子可用於訪問已存在的元素,而不能用於新增元素。
Note:只能對確知存在的元素執行下標操作。例如:
vector<int>ivec; //空vector物件
cout<<ivec[0 ]; //錯誤:ivect不包含任何元素
vector<int>ivec2(10); //含有10個元素的vector物件
cout<<ivec2[10]; //錯誤:ivec2元素的合法索引是從0到9
試圖用下標的元素去訪問一個不存在的元素將引發錯誤,不過這種錯誤不會被編譯器發現,而是在執行時產生不可預知的值。
不幸的是,這種通過下標訪問不存在的元素的行為非常常見,而且會產生很嚴重的後果。所謂的緩衝區溢位指的就是這類錯誤,這也是導致PC及其他裝置上應用程式出現安全問題的一個重要原因。