vector的動態增加大小, 不是在 原空間 之後續接新空間(因爲無法保證原空間之後尚有可供配置的空間),而是一般以原大小的兩倍 另外配置 一塊較大空間,然後將原內容拷貝過來,然後纔開始在原內容之後構造新元素,並釋放原空間;
因此,對vector的任何操作,一旦引起空間重新配置,指向原vector的所有迭代器就都失效了。
下面代碼中的it指向vector的begin():
在執行push_back之前,it的狀態如下:
然後,執行push_back,此時,size將大於capacity,引起空間重新配置:
重新配置空間後,it的狀態如下,此時it已失效;