operator <=虽然让多个重复的元素都在set中

#include <iostream>
#include <set>
using namespace std;class stru{public:stru(int a, int b): x(a), y(b){}int x;int y;
};bool operator<(const stru& a, const stru& b)    //比较的是x的值
{return a.x <= b.x;
}int main()
{//创建set<stru> st;//插入st.emplace(stru(8, 38));st.emplace(stru(8, 39));st.emplace(stru(9, 40));   //添加成功,因为multiset可以有重复的值,也就是说有x = 10的stru也可以。st.emplace(stru(9, 41));    //添加成功st.emplace(stru(10, 42));st.emplace(stru(10, 43));st.emplace(stru(10, 44));auto res = st.emplace(stru(10, 45));//查看for (auto it = st.rbegin(); it != st.rend(); it++)   //10-40 9-43 9-45 8-40 7-35 6-30 5-25 4-20 3-15 2-10 1-5 0-0cout<<(*it).x<<"-"<<(*it).y<<" ";cout<<endl;// 查找,查找出符合比较函数的第一项auto it = st.find(stru(10, 43));           //和上面一样,只会找x = 9的第一项。cout<<"查找出符合比较函数的第一项:"<< it->x <<" "<<it->y<<endl;             // 返回10,42// 迭代器、查看cout<<"迭代器可以找出确定项:"<<(*res.first).x<<"-"<<(*res.first).y<<endl;// 删除,所有符合条件都会被删除st.erase(stru(9, 40));//查看for (auto it = st.rbegin(); it != st.rend(); it++)   //10-40 9-43 9-45 8-40 7-35 6-30 5-25 4-20 3-15 2-10 1-5 0-0cout<<(*it).x<<"-"<<(*it).y<<" ";cout<<endl;// 删除迭代器,只删除特定项st.erase(res.first);//查看for (auto it = st.rbegin(); it != st.rend(); it++)   //10-40 9-43 9-45 8-40 7-35 6-30 5-25 4-20 3-15 2-10 1-5 0-0cout<<(*it).x<<"-"<<(*it).y<<" ";cout<<endl;}

从运行结果可以看出,find和erase都失效了,所以需要通过保存迭代器去查找和删除

C++ std::set operator <= find失效 erase失效 解决方案相关推荐

  1. 关于缓存穿透,缓存击穿,缓存雪崩,热点数据失效问题的解决方案

    关于缓存穿透,缓存击穿,缓存雪崩,热点数据失效问题的解决方案 参考文章: (1)关于缓存穿透,缓存击穿,缓存雪崩,热点数据失效问题的解决方案 (2)https://www.cnblogs.com/To ...

  2. SVG:linearGradient渐变在直线上失效的问题解决方案

    SVG:linearGradient渐变在直线上失效的问题解决方案 参考文章: (1)SVG:linearGradient渐变在直线上失效的问题解决方案 (2)https://www.cnblogs. ...

  3. Win10屏幕亮度调节失效之终极解决方案

    Win10屏幕亮度调节失效之终极解决方案 现象描述: 一般表现为电脑无法调节屏幕亮度,不论是在通知页还是电源选项页,还是在windows移动中心,再或者是键盘快键键,将都不能进行调节! 产生原因: 电 ...

  4. Kotlin HashMap remove失效 get失效问题

    Kotlin HashMap remove失效 get失效问题 由于最近转向大Google的Kotlin,使用感受非常好,推荐!但是今天竟然被HashMap折磨了.遇到问题记录如下. 什么问题 在使用 ...

  5. keep-alive失效原因及解决方案

    keep-alive失效原因及解决方案 问题描述 失效原因 解决方案 问题描述 keep-alive结合路由使用,需要缓存的组件,在路由配置中的meta中添加keep-alive属性 侧边栏二级菜单列 ...

  6. MySQL索引系列--索引失效的原因/解决方案

    原文网址:MySQL索引系列--索引失效的原因/解决方案_IT利刃出鞘的博客-CSDN博客 简介 本文介绍数据库什么时候会索引失效以及如何避免索引失效. 这个问题也是Java后端面试中常见的问题. 失 ...

  7. layerui js获取数据表格中的动态内容on失效live失效

    layerui js获取数据表格中的动态内容on失效live失效.由于jquery1.9版本之后不再使用live,所以改成on,但直接使用on以layer中又不起作用.于是用下面的语句. $(docu ...

  8. Android分割线divider(内含Android虚线分割线失效成实线解决方案)

    Android分割线divider(内含Android虚线分割线失效成实线解决方案) 1,最简单最常见的Android分割线android:attr/listDivider. 最简单最常见的是把And ...

  9. vector的erase失效问题

    VS和CGwin的实现效果还不一样,这里先记录下问题及解决方法.欢迎和大家一起探讨. vector容器erase操作后iterate失效真相 一.VS环境下erase代码分析 代码: for (aut ...

  10. SpringBoot集成Mybatis动态多数据源后,MybatisPlus的IPage失效的问题解决方案

    背景 之前做数据抽取的时候,搭了一个mybatis动态数据源切换的架子.方便他们写抽取的代码.今天同事问我,架子里面的mybatisplus的IPage失效了是什么问题.想了一下,应该是写动态数据源的 ...

最新文章

  1. BZOJ 2190: [SDOI2008]仪仗队( 欧拉函数 )
  2. 【JAVA基础篇】反射
  3. gridview 默认编辑按钮改成图片
  4. VMware Cloud Director 严重漏洞可使整个云基础设施遭接管
  5. 2阶魔方矩阵matlab,matlab魔方矩阵
  6. Openbravo中文使用手册
  7. 获取上周一及上周天日期
  8. IT行业的6大热门岗位,薪酬都有多高?
  9. php7实践指南-ch15MySQL数据库的使用
  10. 图片的居中定位和按钮定位
  11. vue中使用腾讯地图选择地址
  12. 牛客小白月赛25 C白魔法师 (bfs | 并查集)
  13. leetcode:活字印刷
  14. ArcBlock 分享 | 在国外,没有中国人参与的项目就不投
  15. 新唐NUC980使用记录:在用户应用中使用GPIO
  16. 智能运维落地与实践 | 微众银行
  17. 找一个有钱的男朋友是什么体验?
  18. 帝国cms 调用指定栏目 名称 链接 别名
  19. JAVA中去掉字符串中的空格
  20. linux 驱动 到 设备树,tree - Linux:设备树到acpi驱动程序 - 堆栈内存溢出

热门文章

  1. 配置mysql复制基本步骤
  2. 由乱序播放说开了去-数组的打乱算法Fisher–Yates Shuffle
  3. Java多线程-线程的生命周期
  4. 更新Sogou代理服务器程序,支持HTTPS
  5. Android系统Surface机制的SurfaceFlinger服务渲染应用程序UI的过程分析(2)
  6. windows server 2008 NLB 集群
  7. 通过编程方式在InfoPath 2010表单的下拉框修改事件中获取数据
  8. 软件体系结构六大质量属性-浅析淘宝网
  9. [转]通过崩溃地址找错误行数之Delphi版
  10. 决策树分类器vc维如何计算_机器学习入门第三章:决策树分类器-理论