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

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

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

前言

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

我在一個函數(shù)中調(diào)用了set的erase操作來刪除某個迭代器,函數(shù)的傳入?yún)?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)實有差距。在我用標(biāo)程對拍以后,我發(fā)現(xiàn)上述操作存在很大問題。

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

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

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

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

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

總結(jié)

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

相關(guān)文章

  • C++11如何引入的尾置返回類型

    C++11如何引入的尾置返回類型

    C++11 標(biāo)準(zhǔn)引入的尾置返回類型,可以讓返回復(fù)雜類型的函數(shù)聲明更加清晰易讀,在無法使用C++14 標(biāo)準(zhǔn)的情況下,通過尾置返回類型的語法來推導(dǎo)函數(shù)模板的返回類型無疑是最簡便的方法,這篇文章主要介紹了C++11引入的尾置返回類型,需要的朋友可以參考下
    2023-01-01
  • c++11 atomic的使用詳解

    c++11 atomic的使用詳解

    這篇文章主要介紹了c++11 atomic的使用詳解,幫助大家更好的理解和學(xué)習(xí)使用c++,感興趣的朋友可以了解下
    2021-02-02
  • 利用C語言替換文件中某一行的方法

    利用C語言替換文件中某一行的方法

    大家都知道C語言提供了文件操作,但是替換文件的某一行比較麻煩,下面是我使用的一個方法,現(xiàn)在分享給大家,有需要的朋友們可以參考借鑒。
    2016-09-09
  • c++ qsort 與sort 對結(jié)構(gòu)體排序?qū)嵗a

    c++ qsort 與sort 對結(jié)構(gòu)體排序?qū)嵗a

    這篇文章主要介紹了c++ qsort 與sort 對結(jié)構(gòu)體排序?qū)嵗a,幫助大家更好的理解和學(xué)習(xí)c++,感興趣的朋友可以了解下
    2020-11-11
  • QT6安裝圖文教程(兼容QT5、QT4)

    QT6安裝圖文教程(兼容QT5、QT4)

    本文主要介紹了QT6安裝圖文教程(兼容QT5、QT4),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • C++實現(xiàn)將輸入的內(nèi)容輸出到文本文件

    C++實現(xiàn)將輸入的內(nèi)容輸出到文本文件

    這篇文章主要介紹了C++實現(xiàn)將輸入的內(nèi)容輸出到文本文件問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • 深入理解atoi()與itoa()函數(shù)的用法

    深入理解atoi()與itoa()函數(shù)的用法

    本篇文章是對atoi()與itoa()函數(shù)的用法進行了詳細的分析介紹,需要的朋友參考下
    2013-05-05
  • C++實現(xiàn)將長整型數(shù)轉(zhuǎn)換為字符串的示例代碼

    C++實現(xiàn)將長整型數(shù)轉(zhuǎn)換為字符串的示例代碼

    這篇文章主要介紹了C++實現(xiàn)將長整型數(shù)轉(zhuǎn)換為字符串的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • VScode配置cuda開發(fā)環(huán)境的實現(xiàn)步驟

    VScode配置cuda開發(fā)環(huán)境的實現(xiàn)步驟

    本文主要介紹了VScode配置cuda開發(fā)環(huán)境的實現(xiàn)步驟,文中通過圖文介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-07-07
  • C++預(yù)定義的流對象基本示例詳解

    C++預(yù)定義的流對象基本示例詳解

    這篇文章主要為大家介紹了C++預(yù)定義的流對象基本示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-04-04

最新評論