vector刪除連續的元素


這個是在一次面試時候問的,刪除vector中的一個指定元素

// 剛開始是這樣的,刪除vector中的一個等於target的元素,

我一想不就是這個,多簡單,上手就是寫個這。結果,我艹直接死循環(一臉尷尬,多么簡單的題)。
然后調了一會,沒調出來(我是忽略了erase的返回值了,erase返回刪除當前元素的下一個節點的迭代器,但是我有讓他it++了,所以就錯了)
(然后面試官說,先不看這個了,先問問其他的,等會再寫)
void fun(vector<int> &vec, int target)
{
    for(auto it = vec.begin(); it != vec.end(); it++)
    {
        if(*it == target)
        {
            it = vec.erase(it);
        } 
    }
}


int main()
{
    vector<int>vec = {2,4,62,2,33,33,33};
    fun(vec, 33);
    for(int i = 0; i < vec.size(); i++)
    {
        cout << vec[i] << " ";
    }

    return 0;
}

。。。。。 接着開始寫一些鏈表的題目。。。。。

最后面試官說,你在想想erase,或者vector刪除一個元素后的返回值。

我就說,我在寫一遍試試,改改。

突然想起了,我艹。讓它自增了,不該上來就把for循環的it++寫上

一個continue就行了,主要是細節東西沒注意,

void fun(vector<int> &vec, int target)
{
    for(auto it = vec.begin(); it != vec.end(); )
    {
        if(*it == target)
        {
            it = vec.erase(it);
            continue;
        }
        it++;
    }
}

回去等通知吧。。。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM