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

C++中關(guān)于set刪除的一些坑

 更新時(shí)間:2017年02月03日 12:00:57   作者:海虹不老閣  
這篇文章主要介紹了C++中關(guān)于set刪除的一些坑,因?yàn)檫@個(gè)問題浪費(fèi)了很多的時(shí)間,所以想著分享出來給大家,方便同樣遇到這個(gè)問題的朋友們,有需要的朋友們下面來一起看看吧。

前言

最近工作中需要使用平衡樹維護(hù)操作。遂調(diào)用了C++標(biāo)準(zhǔn)庫(kù)里的set,在確保解題思路沒有出錯(cuò)的情況下,我發(fā)現(xiàn)自己始終有一組樣例無法通過。在檢查了很久的細(xì)節(jié)并找了標(biāo)程對(duì)跑中間過程以后,我發(fā)現(xiàn)我在使用set做刪除的時(shí)候,迭代器發(fā)生了和我預(yù)想不一樣的變化。

我在一個(gè)函數(shù)中調(diào)用了set的erase操作來刪除某個(gè)迭代器,函數(shù)的傳入?yún)?shù)為要?jiǎng)h除的迭代器,類似如下

set<int> aha;
 
void del(set<int>::iterator it)
{
 //一頓操作
 aha.erase(it);
}

然后我在main中想要?jiǎng)h除一個(gè)迭代器,并左移一位或右移一位迭代器,類似如下

int main()
{
 set<int>::iterator now;
 //一頓操作
 
 //操作1
 now=aha.find(5);
 del(now);
 now--;

 //操作2
 now=aha.find(8);
 del(now);
 now++;
}

上面是我原來的寫法,刪除這個(gè)迭代器所在的位置,然后移位。

但理想很美好,現(xiàn)實(shí)有差距。在我用標(biāo)程對(duì)拍以后,我發(fā)現(xiàn)上述操作存在很大問題。

使用erase操作刪除一個(gè)迭代器以后,我訪問該迭代器,他仍舊是原來的值。

但當(dāng)我想要左右移位時(shí),經(jīng)測(cè)試發(fā)現(xiàn)不管你左移還是右移,他返回的都是刪除的迭代器在原set中的前一個(gè)位置。
也即

set<int>::iterator now=aha.find(8);
del(now);
/*
現(xiàn)在--now和++now都是同一個(gè)位置
為未刪除now的set中,now的前一個(gè)位置
*/

了解這個(gè)就好辦了,我預(yù)先存下我要?jiǎng)h除的位置,然后迭代器先更新,再調(diào)用刪除即可。

這個(gè)主要還是對(duì)STL不夠熟悉造成的,為此,我后來還去翻閱了set中erase操作的函數(shù)原型及返回值。

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。

相關(guān)文章

  • c++ chrono 獲取當(dāng)前時(shí)間的實(shí)現(xiàn)代碼

    c++ chrono 獲取當(dāng)前時(shí)間的實(shí)現(xiàn)代碼

    這篇文章主要介紹了c++ chrono 獲取當(dāng)前時(shí)間的實(shí)現(xiàn)代碼,本文通過示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-07-07
  • 使用C語言編寫鋼琴小程序

    使用C語言編寫鋼琴小程序

    這篇文章主要為大家詳細(xì)介紹了使用C語言編寫鋼琴小程序,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-02-02
  • 深入C++中API的問題詳解

    深入C++中API的問題詳解

    本篇文章是對(duì)C++中API的問題進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • Qt TCP實(shí)現(xiàn)簡(jiǎn)單通信功能

    Qt TCP實(shí)現(xiàn)簡(jiǎn)單通信功能

    這篇文章主要為大家詳細(xì)介紹了Qt TCP實(shí)現(xiàn)簡(jiǎn)單通信功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • 使用C語言實(shí)現(xiàn)本地socke通訊的方法

    使用C語言實(shí)現(xiàn)本地socke通訊的方法

    這篇文章主要介紹了?使用C語言實(shí)現(xiàn)本地socke通訊,代碼分為服務(wù)器代碼和客戶端代碼,代碼簡(jiǎn)單易懂,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-12-12
  • C語言超詳細(xì)講解排序算法上篇

    C語言超詳細(xì)講解排序算法上篇

    時(shí)間如流水,今天就到初階數(shù)據(jù)結(jié)構(gòu)最后一個(gè)知識(shí)章節(jié)了,常見的排序算法!在進(jìn)入這期之前,程愛打籃球的程序猿想說一句,如果有不懂的地方可以反復(fù)觀看我之前的內(nèi)容,再還有不懂可以直接找我,幫你安排的妥妥的
    2022-03-03
  • Qt定時(shí)器(QTimer)的3種使用方法

    Qt定時(shí)器(QTimer)的3種使用方法

    本文主要介紹了Qt定時(shí)器(QTimer)的3種使用方法,主要包括QObject類提供的定時(shí)器,QTimer類提供的定時(shí)器,靜態(tài)的singleShot?()函數(shù)創(chuàng)建單觸發(fā)定時(shí)器,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-01-01
  • C語言中while與do-while的介紹與注意事項(xiàng)

    C語言中while與do-while的介紹與注意事項(xiàng)

    對(duì)于C語言中的while與do-while,相信很多都再熟悉不過了,最近在工作中就用到了,所以想著總結(jié)一下,方便自己或者有需要的朋友們參考借鑒,文中通過示例代碼介紹的很詳細(xì),感興趣的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧。
    2016-10-10
  • VisualStudio2019解決scanf函數(shù)報(bào)錯(cuò)問題

    VisualStudio2019解決scanf函數(shù)報(bào)錯(cuò)問題

    在 Visual Studio 2019 編輯代碼時(shí),前期剛剛接觸到VS編譯器時(shí)存在的困惑,當(dāng)用scanf()函數(shù),進(jìn)行輸入時(shí),在運(yùn)行的時(shí)候編譯器會(huì)出現(xiàn)警告報(bào)錯(cuò),本文就來介紹一下解決方法
    2023-08-08
  • Cocos2dx實(shí)現(xiàn)數(shù)字跳動(dòng)效果

    Cocos2dx實(shí)現(xiàn)數(shù)字跳動(dòng)效果

    這篇文章主要為大家詳細(xì)介紹了Cocos2dx實(shí)現(xiàn)數(shù)字跳動(dòng)效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-09-09

最新評(píng)論

正阳县| 大安市| 高雄市| 买车| 玉树县| 乐至县| 怀远县| 克什克腾旗| 铅山县| 牡丹江市| 耿马| 虞城县| 广南县| 马公市| 乐清市| 崇左市| 岚皋县| 边坝县| 清涧县| 吴旗县| 那曲县| 宜兰市| 论坛| 西乌珠穆沁旗| 浪卡子县| 凭祥市| 静宁县| 河池市| 集贤县| 深州市| 大姚县| 鹤壁市| 西贡区| 武穴市| 丰城市| 西青区| 健康| 河南省| 阳曲县| 丰顺县| 南和县|