關於vector動態增加容量後的注意事項

vector的動態增加大小, 不是在 原空間 之後續接新空間(因爲無法保證原空間之後尚有可供配置的空間),而是一般以原大小的兩倍 另外配置 一塊較大空間,然後將原內容拷貝過來,然後纔開始在原內容之後構造新元素,並釋放原空間;

因此,對vector的任何操作,一旦引起空間重新配置,指向原vector的所有迭代器就都失效了。

下面代碼中的it指向vector的begin():

在執行push_back之前,it的狀態如下:

然後,執行push_back,此時,size將大於capacity,引起空間重新配置:

重新配置空間後,it的狀態如下,此時it已失效;

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章