vector中erase用法 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)為沒(méi)問(wèn)題,程序就可以運(yùn)行。
我覺(jué)得標(biāo)準(zhǔn)就是標(biāo)準(zhǔn)。如果它違反了標(biāo)準(zhǔn),它是否可以通過(guò)取決于字符。
C 中怎么用erase()刪除vector中重復(fù)的元素?
假設(shè)有一組數(shù)組(字符數(shù)組、整數(shù)數(shù)組等),其中需要?jiǎng)h除重復(fù)的元素。更方便的方法是使用STL::vector,其中定義了許多成員函數(shù)。通過(guò)這些成員函數(shù)的搭配,可以很容易地實(shí)現(xiàn)許多任務(wù)。
首先,對(duì)數(shù)組進(jìn)行排序:
1。向量< int> sun
2。//向sun添加元素
3。對(duì)于(int i=0 i< n i){
4sun.push后退(質(zhì)數(shù)[i])
5。}
6.排序(太陽(yáng)。開(kāi)始(), 太陽(yáng).end())
其次,使用擦除和唯一功能可以從數(shù)組中刪除重復(fù)元素:
1太陽(yáng)。擦除(唯一(太陽(yáng)。開(kāi)始(), 太陽(yáng).end()), 太陽(yáng).end())
擦除的功能是刪除指定范圍內(nèi)的所有函數(shù)
唯一的是將相鄰的重復(fù)元素移到最后
vector如何獲取并刪除一個(gè)元素?
C實(shí)際刪除的元素vector中的元素使用容器vecrot中的STD::vector::erase()方法。在C中,STD::remove()不會(huì)刪除元素,因?yàn)槿萜鞯拇笮。ǎ┎粫?huì)改變,只會(huì)替換元素。Code:STD::vector::erase()函數(shù)原型:iterator erase(iterator position)//刪除指定的元素iterator erase(iterator first,iterator last)//刪除指定范圍內(nèi)的元素。返回值:指向被刪除元素(或范圍)的下一個(gè)元素。位置.擦除( 位置.開(kāi)始()I)注意向量的大小在刪除之后發(fā)生了變化,循環(huán)控制條件應(yīng)該更改為c.pop uuu back c的最后一個(gè)元素,返回void。