经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » C » 查看文章
c/c++ 标准库 map set 删除
来源:cnblogs  作者:小石王  时间:2018/9/25 20:38:34  对本文有异议

标准库 map set 删除

删除操作

有map如下:

  1. map<int, size_t> cnt{{2,22}, {3,33}, {1,11}, {4,44};

删除方法:

删除操作种类 功能描述
cnt.erase(3); 删除key为3的元素,并返回删除的元素的个数
cnt.erase(p); p为迭代器,删除p指向的元素,并返回p之后元素的迭代器
cnt.erase(b, e); b,e为迭代器,删除b和e所表示范围的元素,返回e

注意:当使用迭代器删除的时候,map,set,list迭代器不支持加法,减法运算,但可以++,--。

  1. map<int, int>::const_iterator it = mp.cbegin();
  2. auto it2 = it + 2;//NG
  3. ++it;//OK

小例子:

  1. #include <iostream>
  2. #include <map>
  3. #include <set>
  4. #include <vector>
  5. #include <list>
  6. #include <algorithm>
  7. using namespace std;
  8. int main(){
  9. map<int , int> mp{{2,22},{3,33},{1,11},{4,44}};
  10. for(auto const &s : mp){
  11. cout << s.first << "," << s.second << endl;
  12. }
  13. cout << "-----------------" << endl;
  14. map<int, int>::const_iterator it = mp.cbegin();
  15. //map,set,list迭代器不支持加法,减法运算,但可以++,--。
  16. //auto it2 = it + 2;//NG
  17. auto it2 = mp.find(2);
  18. auto rt2 = mp.erase(it, it2);//删除1,rt2指向(2,22)
  19. cout << rt2->first << ":" << rt2->second << endl;
  20. auto rt1 = mp.erase(it2);//删除2
  21. cout << rt1->first << ":" << rt1->second << endl;
  22. auto rt = mp.erase(3);//删除3,返回值为1或者0,因为3存在所以返回1
  23. for(auto const &s : mp){
  24. cout << s.first << "," << s.second << endl;
  25. }
  26. }

github完整代码

c/c++ 学习互助QQ群:877684253

本人微信:xiaoshitou5854

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号