最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++中vector與remove()函數(shù)詳解

 更新時間:2023年06月28日 14:21:29   作者:Jev_0987  
這篇文章主要介紹了C++中vector與remove()函數(shù),本文實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下

C++中vector與remove()函數(shù)

話不多說,直接來

remove()干了什么:把被刪除元素 后面的元素 移動到當(dāng)前被刪除元素位置,返回最后一個被改變值的下一個迭代器。。

舉栗:

// 首先,定義一個vector
vector<int> demo = {1,3,3,4,3,5,6};

vector的對應(yīng)值分別為:1,3,3,4,3,5,6

// 調(diào)用remove函數(shù)
vector<int>:: iterator demo_return = remove(demo.begin(), demo.end(), 3);

打印查看最終結(jié)果

cout << "remove() return:" <<endl;
for(auto iter = demo_return; iter != demo_return.end(); ++iter){
? ? ? ? cout << *iter << ' ';
? ? }
cout << endl;
cout << "after remove():" << endl;
for(auto iter = demo.begin(); iter != demo.end(); ++iter){
? ? ? ? cout << *iter << ' ';
}

remove() return:
3 5 6 
after remove():
1 4 5 6 3 5 6

可以看到,最終結(jié)果:

remove函數(shù)返回值是:3,5,6

在remove函數(shù)操作后vector為:1,4,5,6,3,5,6

它到底做了什么?

還是那句話:把被刪除元素 后面的元素 移動到當(dāng)前被刪除元素位置,返回最后一個被改變值的下一個迭代器。。源碼如下:

remove(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __value_)
{
    __first = _VSTD::find(__first, __last, __value_);
    if (__first != __last)
    {
        _ForwardIterator __i = __first;
        while (++__i != __last)
        {
            if (!(*__i == __value_))
            {
                *__first = _VSTD::move(*__i);
                ++__first;
            }
        }
    }
    return __first;
}

大致流程如下:

  • first指針找到第一個匹配元素;
  • 索引 i 指向 first 所指元素;
  • 索引i向后遍歷,找到與first不同的元素,賦值給first指向元素,first指針后移;
  • 循環(huán)第3步。(索引i到vector末尾結(jié)束循環(huán))

畫圖解釋一下

后續(xù)

這樣可以用來做什么?首先,返回的first迭代器,剛好是我們所要vector的末尾。也就是說demo.begin()到remove(3),是我們所需的vector(即刪掉3)但是我們會發(fā)現(xiàn),其實還有元素留在vector里(它的size容量大小沒有改變)所以可以通過erase操作,把后面的刪了(size容量變小,但是capacity容量不變)

最終返回的結(jié)果:

1 4 5 6

到此這篇關(guān)于C++中vector與remove()函數(shù)的文章就介紹到這了,更多相關(guān)C++ vector與remove()函數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論

汾阳市| 德格县| 威远县| 财经| 栾城县| 葫芦岛市| 将乐县| 长沙市| 封丘县| 金溪县| 太湖县| 永年县| 阆中市| 祁门县| 新晃| 永寿县| 佛冈县| 榆树市| 福泉市| 浦县| 法库县| 雷波县| 浦东新区| 泾阳县| 乐安县| 新和县| 黄浦区| 赤水市| 香河县| 平阴县| 桃园市| 衡山县| 杂多县| 兰考县| 旬阳县| 闽侯县| 合阳县| 昌黎县| 敦化市| 南川市| 贡觉县|