stl迭代器失效 vector中erase函數(shù)可以使用迭代器嗎?為什么我的會報錯呢?
vector中erase函數(shù)可以使用迭代器嗎?為什么我的會報錯呢?例如,矢量擦除的一個實現(xiàn)如果擦除是如上所述實現(xiàn)的,那么nums.erase刪除(it)和it=nums.erase刪除(它)在兩次操作
vector中erase函數(shù)可以使用迭代器嗎?為什么我的會報錯呢?
例如,矢量擦除的一個實現(xiàn)
如果擦除是如上所述實現(xiàn)的,那么nums.erase刪除(it)和it=nums.erase刪除(它)在兩次操作后繼續(xù)使用它實際上可以產(chǎn)生相同的效果(如果編譯器同意);
實際上nums.erase刪除(it)根據(jù)標(biāo)準(zhǔn),后面的迭代器應(yīng)該是無效的,但是如果如果繼續(xù)使用它,在某些編譯器下,可能不會報告錯誤,就像erase的返回值一樣。如果編譯器認(rèn)為沒問題,程序就可以運行。
我覺得標(biāo)準(zhǔn)就是標(biāo)準(zhǔn)。如果它違反了標(biāo)準(zhǔn),它是否可以通過取決于字符。
容器的迭代器、指針和引用失效是什么意思?
這意味著可以訪問容器中元素的迭代器可能變得不可訪問,因為插入和刪除可能會更改元素在內(nèi)存中的位置,因此由于插入或刪除操作,原始迭代器的位置可能不再存儲原始值