1. 程式人生 > >string和vector下標運算子

string和vector下標運算子

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及其他裝置上應用程式出現安全問題的一個重要原因。