vector迭代器失效問題 vector中erase函數(shù)可以使用迭代器嗎?為什么我的會(huì)報(bào)錯(cuò)呢?
vector中erase函數(shù)可以使用迭代器嗎?為什么我的會(huì)報(bào)錯(cuò)呢?例如,矢量擦除的一個(gè)實(shí)現(xiàn)如果擦除是如上所述實(shí)現(xiàn)的,那么nums.erase刪除(it)和it=nums.erase刪除(它)在兩次操作
vector中erase函數(shù)可以使用迭代器嗎?為什么我的會(huì)報(bào)錯(cuò)呢?
例如,矢量擦除的一個(gè)實(shí)現(xiàn)
如果擦除是如上所述實(shí)現(xiàn)的,那么nums.erase刪除(it)和it=nums.erase刪除(它)在兩次操作后繼續(xù)使用它實(shí)際上可以產(chǎn)生相同的效果(如果編譯器同意);
實(shí)際上nums.erase刪除(it)根據(jù)標(biāo)準(zhǔn),后面的迭代器應(yīng)該是無(wú)效的,但是如果如果繼續(xù)使用它,在某些編譯器下,可能不會(huì)報(bào)告錯(cuò)誤,就像erase的返回值一樣。如果編譯器認(rèn)為沒問題,程序就可以運(yùn)行。
我覺得標(biāo)準(zhǔn)就是標(biāo)準(zhǔn)。如果它違反了標(biāo)準(zhǔn),它是否可以通過取決于字符。