欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

話不多說,直接來

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

舉栗:

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

vector的對(duì)應(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)到當(dāng)前被刪除元素位置,返回最后一個(gè)被改變值的下一個(gè)迭代器。。源碼如下:

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

畫圖解釋一下

后續(xù)

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

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

1 4 5 6

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

相關(guān)文章

  • C/C++?判斷計(jì)算機(jī)存儲(chǔ)器字節(jié)序(端序)的幾種方式

    C/C++?判斷計(jì)算機(jī)存儲(chǔ)器字節(jié)序(端序)的幾種方式

    字節(jié)序是計(jì)算機(jī)存儲(chǔ)數(shù)據(jù)的格式,主存儲(chǔ)器(主存)的字節(jié)序?qū)Τ绦虻囊浦残院图嫒菪灾陵P(guān)重要,利用聯(lián)合體、指針、位移和掩碼等方法可以檢測(cè)和處理字節(jié)序問題,對(duì)于內(nèi)存數(shù)據(jù)操作重要,也關(guān)系到跨平臺(tái)和網(wǎng)絡(luò)通信的數(shù)據(jù)處理
    2024-10-10
  • c語言數(shù)據(jù)結(jié)構(gòu)之并查集 總結(jié)

    c語言數(shù)據(jù)結(jié)構(gòu)之并查集 總結(jié)

    一種用于管理分組的數(shù)據(jù)結(jié)構(gòu)。它具備兩個(gè)操作:(1)查詢?cè)豠和元素b是否為同一組 (2) 將元素a和b合并為同一組,需要的朋友可以參考下
    2018-08-08
  • 探討:用兩個(gè)棧實(shí)現(xiàn)一個(gè)隊(duì)列(我作為面試官的小結(jié))

    探討:用兩個(gè)棧實(shí)現(xiàn)一個(gè)隊(duì)列(我作為面試官的小結(jié))

    作為面試官的我,經(jīng)常拿這道用兩個(gè)棧實(shí)現(xiàn)一個(gè)隊(duì)列的面試題來考面試者,通過對(duì)面試者的表現(xiàn)和反應(yīng),有一些統(tǒng)計(jì)和感受,在此做個(gè)小結(jié)
    2013-05-05
  • VC實(shí)現(xiàn)批量刪除指定文件的方法

    VC實(shí)現(xiàn)批量刪除指定文件的方法

    這篇文章主要介紹了VC實(shí)現(xiàn)批量刪除指定文件的方法,是一個(gè)比較普遍且實(shí)用的功能,需要的朋友可以參考下
    2014-07-07
  • 論C++的lambda是函數(shù)還是對(duì)象

    論C++的lambda是函數(shù)還是對(duì)象

    這篇文章主要介紹了論C++的lambda是函數(shù)還是對(duì)象,對(duì)于有捕獲的lambda,其等價(jià)于對(duì)象。對(duì)于沒有任何捕獲的lambda,其等價(jià)于函數(shù),下面來看看具體的相關(guān)內(nèi)容,需要的朋友可以參考一下
    2022-02-02
  • C++派生訪問說明符小記(推薦)

    C++派生訪問說明符小記(推薦)

    下面小編就為大家?guī)硪黄狢++派生訪問說明符小記(推薦)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-01-01
  • 在C++中如何阻止類被繼承詳解

    在C++中如何阻止類被繼承詳解

    這篇文章主要介紹了在C++中如何阻止類被繼承,對(duì)于C++初學(xué)者而言可以通過本文實(shí)例更好的理解類的原理及運(yùn)用,需要的朋友可以參考下
    2021-09-09
  • C++中stack容器的使用

    C++中stack容器的使用

    本文主要介紹了C++中stack容器的使用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • C++利用libcurl庫實(shí)現(xiàn)多線程文件下載

    C++利用libcurl庫實(shí)現(xiàn)多線程文件下載

    這篇文章主要為大家詳細(xì)介紹了C++如何利用libcurl庫實(shí)現(xiàn)多線程文件下載,文章的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,有需要的小伙伴可以參考下
    2024-01-01
  • 使用C++調(diào)用Python代碼的方法步驟

    使用C++調(diào)用Python代碼的方法步驟

    這篇文章主要介紹了使用C++調(diào)用Python代碼的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02

最新評(píng)論