C++ std::set operator <= find失效 erase失效 解决方案
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)关于缓存穿透,缓存击穿,缓存雪崩,热点数据失效问题的解决方案 (2)https://www.cnblogs.com/To ...
- SVG:linearGradient渐变在直线上失效的问题解决方案
SVG:linearGradient渐变在直线上失效的问题解决方案 参考文章: (1)SVG:linearGradient渐变在直线上失效的问题解决方案 (2)https://www.cnblogs. ...
- Win10屏幕亮度调节失效之终极解决方案
Win10屏幕亮度调节失效之终极解决方案 现象描述: 一般表现为电脑无法调节屏幕亮度,不论是在通知页还是电源选项页,还是在windows移动中心,再或者是键盘快键键,将都不能进行调节! 产生原因: 电 ...
- Kotlin HashMap remove失效 get失效问题
Kotlin HashMap remove失效 get失效问题 由于最近转向大Google的Kotlin,使用感受非常好,推荐!但是今天竟然被HashMap折磨了.遇到问题记录如下. 什么问题 在使用 ...
- keep-alive失效原因及解决方案
keep-alive失效原因及解决方案 问题描述 失效原因 解决方案 问题描述 keep-alive结合路由使用,需要缓存的组件,在路由配置中的meta中添加keep-alive属性 侧边栏二级菜单列 ...
- MySQL索引系列--索引失效的原因/解决方案
原文网址:MySQL索引系列--索引失效的原因/解决方案_IT利刃出鞘的博客-CSDN博客 简介 本文介绍数据库什么时候会索引失效以及如何避免索引失效. 这个问题也是Java后端面试中常见的问题. 失 ...
- layerui js获取数据表格中的动态内容on失效live失效
layerui js获取数据表格中的动态内容on失效live失效.由于jquery1.9版本之后不再使用live,所以改成on,但直接使用on以layer中又不起作用.于是用下面的语句. $(docu ...
- Android分割线divider(内含Android虚线分割线失效成实线解决方案)
Android分割线divider(内含Android虚线分割线失效成实线解决方案) 1,最简单最常见的Android分割线android:attr/listDivider. 最简单最常见的是把And ...
- vector的erase失效问题
VS和CGwin的实现效果还不一样,这里先记录下问题及解决方法.欢迎和大家一起探讨. vector容器erase操作后iterate失效真相 一.VS环境下erase代码分析 代码: for (aut ...
- SpringBoot集成Mybatis动态多数据源后,MybatisPlus的IPage失效的问题解决方案
背景 之前做数据抽取的时候,搭了一个mybatis动态数据源切换的架子.方便他们写抽取的代码.今天同事问我,架子里面的mybatisplus的IPage失效了是什么问题.想了一下,应该是写动态数据源的 ...
最新文章
- BZOJ 2190: [SDOI2008]仪仗队( 欧拉函数 )
- 【JAVA基础篇】反射
- gridview 默认编辑按钮改成图片
- VMware Cloud Director 严重漏洞可使整个云基础设施遭接管
- 2阶魔方矩阵matlab,matlab魔方矩阵
- Openbravo中文使用手册
- 获取上周一及上周天日期
- IT行业的6大热门岗位,薪酬都有多高?
- php7实践指南-ch15MySQL数据库的使用
- 图片的居中定位和按钮定位
- vue中使用腾讯地图选择地址
- 牛客小白月赛25 C白魔法师 (bfs | 并查集)
- leetcode:活字印刷
- ArcBlock 分享 | 在国外,没有中国人参与的项目就不投
- 新唐NUC980使用记录:在用户应用中使用GPIO
- 智能运维落地与实践 | 微众银行
- 找一个有钱的男朋友是什么体验?
- 帝国cms 调用指定栏目 名称 链接 别名
- JAVA中去掉字符串中的空格
- linux 驱动 到 设备树,tree - Linux:设备树到acpi驱动程序 - 堆栈内存溢出
热门文章
- 配置mysql复制基本步骤
- 由乱序播放说开了去-数组的打乱算法Fisher–Yates Shuffle
- Java多线程-线程的生命周期
- 更新Sogou代理服务器程序,支持HTTPS
- Android系统Surface机制的SurfaceFlinger服务渲染应用程序UI的过程分析(2)
- windows server 2008 NLB 集群
- 通过编程方式在InfoPath 2010表单的下拉框修改事件中获取数据
- 软件体系结构六大质量属性-浅析淘宝网
- [转]通过崩溃地址找错误行数之Delphi版
- 决策树分类器vc维如何计算_机器学习入门第三章:决策树分类器-理论