c++中关于集删除的一些坑

  

<强>前言

  

最近工作中需要使用平衡树维护操作。遂调用了c++标准库里的设置,在确保解题思路没有出错的情况下,我发现自己始终有一组样例无法通过。在检查了很久的细节并找了标程对跑中间过程以后,我发现我在使用集做删除的时候,迭代器发生了和我预想不一样的变化。

  

我在一个函数中调用了设置的抹去操作来删除某个迭代器,函数的传入参数为要删除的迭代器,类似如下

        set啊哈;      空白德尔(set      

然后我主要在中想要删除一个迭代器,并左移一位或右移一位迭代器,类似如下

        int main ()   {   现在set      

上面是我原来的写法,删除这个迭代器所在的位置,然后移位。
  

  

但理想很美好,现实有差距。在我用标程对拍以后,我发现上述操作存在很大问题。
  

  

使用抹去操作删除一个迭代器以后,我访问该迭代器,他仍旧是原来的值。
  

  

但当我想要左右移位时,经测试发现不管你左移还是右移,他返回的都是删除的迭代器在原中设置的前一个位置。
  也即

        现在set      

了解这个就好办了,我预先存下我要删除的位置,然后迭代器先更新,再调用删除即可。
  

  

这个主要还是对STL不够熟悉造成的,为此,我后来还去翻阅了组中删除操作的函数原型及返回值。

  

<强>总结

  

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。

c++中关于集删除的一些坑