**内容:**记录一下STL容器multiset(其他multi类容器也要小心)在调用erase函数时,如果考虑不周到,可能会出现你意想不到的结果哦!

测试代码:
【博客14】multiset容器中对erase函数的 "误用"
结果:
【博客14】multiset容器中对erase函数的 "误用"
结果分析:这段代码的本意是你觉得你插入的数据多了一个3,你想要删除这个3,但是你在erase传入了键值,那么erase函数将会删除所有键值为3的元素。因此出现所有的3都丢失了。如果你想要只删除特定的某个元素,那么你需要传入的是迭代器,而不是键值

正确代码如下:
【博客14】multiset容器中对erase函数的 "误用"
结果:
【博客14】multiset容器中对erase函数的 "误用"
结果分析:得到正确结果。在erase函数传入迭代器后,那么他只会删除掉迭代器指向的特定元素,而不会删除其他键值跟他相同的元素。

建议:阅读函数的形参和返回值,特别是名字相同,但在不同容器可能有不同做法的函数,更要小心。所以,要养成看函数的原理或者从手册看函数的不同重载形式会有哪些不同的表现。STL容器函数可以在www.cplusplus.com上看到。

大三学生一枚,文章均非抄袭或者模仿,均为原创,仅代表个人观点,如果文章有错误的地方,欢迎在下方提出,每条评论我都会去认真看并回复,同时感谢指正的前辈。

相关文章:

  • 2022-12-23
  • 2022-01-28
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-01-19
  • 2021-10-31
  • 2022-02-18
猜你喜欢
  • 2022-01-07
  • 2021-04-20
  • 2022-03-10
  • 2021-11-05
  • 2022-12-23
  • 2022-03-04
  • 2022-12-23
相关资源
相似解决方案