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

C++中關于set刪除的一些坑

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

前言

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

我在一個函數(shù)中調用了set的erase操作來刪除某個迭代器,函數(shù)的傳入參數(shù)為要刪除的迭代器,類似如下

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

然后我在main中想要刪除一個迭代器,并左移一位或右移一位迭代器,類似如下

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

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

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

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

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

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

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

了解這個就好辦了,我預先存下我要刪除的位置,然后迭代器先更新,再調用刪除即可。

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

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。

相關文章

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

    c++ chrono 獲取當前時間的實現(xiàn)代碼

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

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

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

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

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

    Qt TCP實現(xiàn)簡單通信功能

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

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

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

    C語言超詳細講解排序算法上篇

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

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

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

    C語言中while與do-while的介紹與注意事項

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

    VisualStudio2019解決scanf函數(shù)報錯問題

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

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

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

最新評論

荥经县| 开原市| 建平县| 白朗县| 郓城县| 中超| 罗源县| 门源| 始兴县| 兴安盟| 晋江市| 平和县| 泰来县| 龙岩市| 介休市| 聂拉木县| 柯坪县| 龙江县| 闸北区| 卓尼县| 松江区| 毕节市| 固安县| 隆昌县| 宁安市| 湖州市| 阿坝| 交城县| 乌兰县| 宁海县| 仁怀市| 阳信县| 彰化市| 上虞市| 广平县| 遵义市| 昭苏县| 合肥市| 元江| 林州市| 蓬安县|