当前位置: 首页 > 编程日记 > 正文

STL--自定义类型的排序

STL的排序太坑了,尤其是在VS2010上重载sort函数的第三个比较参数的时候。

invalid operator <

这个错在写多关键字排序的时候就没有停止过。

本来想查书解决,结果各种重载都试了还是不行,百度才知道是因为:strict weak ordering。也就是说,如果a==b,则返回的应该是false,如果返回的是true,则会出上面的错。

参考这个:(http://hi.baidu.com/haochaoqing/item/00b40cf2b8c4efc0a835a255)

所以最简单的这种比较函数:无论相等或者不等都返回1的写法

 1 bool comp(Student s1, Student s2){
 2     if(s1.score==s2.score)
 3         return 1;
 4     else
 5         return s1.id<s2.id;
 6 }   
 7 
 8 bool comp(Student s1, Student s2){
 9     if(s1.score!=s2.score)
10         return 1;
11     else
12         return s1.id<s2.id;
13 }    

这两种写法都会报错。

而无论相等或者不等都返回0的写法不会报错

 1 bool comp(Student s1, Student s2){
 2     if(s1.score==s2.score)
 3         return 0;
 4     else
 5         return s1.id<s2.id;
 6 }    
 7 bool comp(Student s1, Student s2){
 8     if(s1.score!=s2.score)
 9         return 0;
10     else
11         return s1.id<s2.id;
12 }    

故多关键字的STL排序可以写成:

 1 #include<time.h>
 2 #include<iostream>
 3 #include<vector>
 4 #include<algorithm>
 5 using namespace std;
 6 struct Node
 7 {
 8      int x;
 9      int y;
10 
11 };
12 bool Comp(Node &a,Node &b)
13 {
14     if(a.x==b.x) return b.y>a.y; 
15     else 
16         return a.x>b.x;
17 }
18 vector<Node> node;
19 int main()
20 {
21     srand((unsigned int)time(0));
22     for(int i=0;i<10;i++)
23     {
24         Node a;
25         a.x=rand()%(10+1-0)+0;
26         a.y=rand()%(10+1-0)+0;
27         node.push_back(a);
28     }
29     sort(node.begin(),node.end(),Comp);
30     for(int i=0;i<10;i++)
31     {
32         printf("%d %d\n",node[i].x,node[i].y);
33     }
34 }
多关键字sort排序

转载于:https://www.cnblogs.com/holyprince/p/3315051.html

相关文章:

《树莓派Python编程指南》——2.3 小结

本节书摘来自华章计算机《树莓派Python编程指南》一书中的第2章&#xff0c;第2.3节,作者&#xff1a;&#xff08;美&#xff09; Alex Bradbury Ben Everard更多章节内容可以访问云栖社区“华章计算机”公众号查看。 2.3 小结 我们的Python快速导览到此为止。希望这些程序能…

十年沉浮,用Python看创业公司消亡史

作者 | 叶庭云来源 | 修炼Python头图 | 下载于视觉中国前言IT桔子有一个新经济死亡公司数据库&#xff1a;https://www.itjuzi.com/deathCompany&#xff0c;统计了2000-2020年之间比较出名的公司 "死亡" 数据。"死亡公司数据库" 的公司关闭时间是依据公开…

.NET下正则表达式应用的四个示例

1.确认有效电子邮件格式 下面的代码示例使用静态 Regex.IsMatch 方法验证一个字符串是否为有效电子邮件格式。如果字符串包含一个有效的电子邮件地址&#xff0c;则 IsValidEmail 方法返回 true&#xff0c;否则返回 false&#xff0c;但不采取其他任何操作。您可以使用 IsVali…

static的本质

通过反编译发现&#xff0c;static的本质是abstract sealed。因此&#xff0c;无法继承System.Math类&#xff0c;因为它是static的。转载于:https://www.cnblogs.com/Benjamin/p/3319856.html

Sunrun2016年Q3财务业绩强劲 冲刺全年目标

美国第二大住宅太阳能光伏系统安装商Sunrun&#xff0c;第三季度业绩表现强劲&#xff0c;促使该公司提高其今年的部署前景。Sunrun也采用当下流行的零首付商业模式&#xff0c;从而获取长期收益。 Sunrun2016年Q3财务业绩强劲 冲刺全年目标责任编辑&#xff1a;editor006 作者…

tcpdump移植和使用

tcpdump移植和使用[摘要]&#xff1a;本文主要讲解了tcpdump相关概念和主要参数的使用&#xff0c;并通过事例来讲解tcpdump的用法&#xff0c;最后讲解如何将其移植到嵌入式开发环境&#xff0c;使其在嵌入式主控板中发挥其强大功能。一. tcpdump概念tcpdump就是dump the traf…

在ASP.NET中自动给URL地址加上超链接

作为一个程序员&#xff0c;在完成设计后还要根据程序的情况以及用户的反映不断对程序进行改进&#xff0c;这样才能不断地完善自己的作品。我在制作完软件商务网 http://www.bizsofts.com 的论坛后&#xff0c;发现人们总喜欢在帖子中加上各种有用的URL链接或Email地址。而我当…

释放联接新价值,华为提出“1+N”5G目标网,推动运营商构筑四大数字化转型的核心能力

近日&#xff0c;在MWCS 2021 媒体分析师预沟通会上&#xff0c;华为常务董事、运营商BG总裁丁耘发表了主题为《点亮未来&#xff0c;释放联接新价值》的主题演讲&#xff0c;提出华为将立足联接&#xff0c;通过持续的技术与商业创新&#xff0c;为客户创造价值&#xff0c;为…

光伏电价断崖式下跌 企业遭遇成长烦恼

在弃光限电严重、补贴欠发(三年缺口将达600亿元)、用地问题突显的情况之下&#xff0c;近日&#xff0c;2017年光伏上网电价将酝酿下调近三成&#xff0c;新“四座大山”将蚕食新能源企业的利润。 协合新能源 在香港上市的协合新能源却在不利情况下逆势扩张&#xff0c;营收从2…

asp.net2.0如何加密数据库联接字符串

asp.net2.0如何加密数据库联接字符串 在asp.net2.0中,发布网站时,加密web.config,这样可以有效保证数据库用户和密码安全,其步骤如下: 1.添加密钥 执行:C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/aspnet_regiis -pc "hnlaw" -exp 其中"hnlaw"为密钥名…

机器学习 KNN算法实践

作者 | 叶庭云来源 | 修炼Python头图 | 下载于视觉中国KNN算法简介KNN&#xff08;K-Nearest Neighbor&#xff09;最邻近分类算法是数据挖掘分类&#xff08;classification&#xff09;技术中常用算法之一&#xff0c;其指导思想是"近朱者赤&#xff0c;近墨者黑"&…

【生活随想】实习结束以及开始校园招聘

我发现很多时候我处理事情的思维是局限的&#xff01;就拿前几天辞职的事情来说吧&#xff0c;我原打算直接向公司辞职&#xff0c;但后来听同学说“还是先试着向公司请假比较好”&#xff0c;不用细想也是&#xff0c;如果公司同意我请假&#xff0c;我还能给自己留一条后路&a…

《21世纪机器人》一一第1章 他用自己的思想打造机器人

第1章 他用自己的思想打造机器人 我在前面说过&#xff0c;这本书的结尾是吉米站在后台&#xff0c;准备闪亮登场&#xff0c;这是他的首次亮相。当我把吉米的这张照片发给我太太时&#xff0c;她很快回复&#xff1a;“这真的是用你的思想打造出的机器人&#xff01;&#xff…

牛年快乐~新一年从甜蜜的烘焙里学AI

作者 | 神经小兮来源 | HyperAI超神经头图 | 下载于视觉中国经过数千年的积累&#xff0c;人类已经开发出了各色美味&#xff0c;但我们的味蕾却永远不知满足。谷歌一位 AI 开发者&#xff0c;为了探索新的可能&#xff0c;用 AI 来开发新的甜点食谱。AI 在菜谱开发这一领域&am…

Datalist控件,Repeater控件如何分页?

Asp.net提供了三个功能强大的列表控件&#xff1a;DataGrid、DataList和Repeater控件&#xff0c;但其中只有DataGrid控件提供分页功能。相对DataGrid&#xff0c;DataList和Repeater控件具有更高的样式自定义性&#xff0c;所以很多时候我们喜欢使用DataList或Repeater控件来显…

java List集合中contains方法总是返回false

ArrayList的contains方法 java 今天在用ArrayList类的caontains方法是遇到了问题&#xff0c;我写了一个存放User类的ArrayList 但在调用list.contains(user)时总是返回false。 去看了下ArrayList的源码&#xff0c;源码如下&#xff1a; Java代码 public boolean contains…

营销自动化的4大预测分析错误

预测分析是数字营销的新领域。许多专家已经讨论了将预测分析与营销自动化工具&#xff08;如HubSpot和Marketo&#xff09;合并的好处。 将预测分析整合到用户的营销自动化策略中可能非常有益&#xff0c;但也很难执行。以下是可能会阻止其实施的一些常见的错误&#xff1a; 1.…

Prolog学习:数独和八皇后问题

上一篇简单介绍了下Prolog的一些基本概念&#xff0c;今天我们来利用这些基本概念解决两个问题&#xff1a;数独和八皇后问题。 数独 数独是一个很经典的游戏&#xff1a; 玩家需要根据nn盘面上的已知数字&#xff0c;推理出所有剩余空格的数字&#xff0c;并满足每一行、每一列…

每年节省170万美元的文档预览费用,借助机器学习的DropBox有多强​?

【CSDN 编者按】Dropbox 借助机器学习的预测功能&#xff0c;每年能为公司节省了一百多七十多万美元的基础架构成本。非常了不起的成就。本文&#xff0c;一起来看一看 Dropbox 采用机器学习的经过&#xff0c;以及分析一下其中的利弊。译者 | 弯月 责编 | 张文出品 | CSDN&a…

asp.net 对xml文件的读写,添加,修改,删除操作

asp.net 对xml文件的读写,添加,修改,删除操作 下面有代码调试正确 using System; using System.Collections; using System.ComponentModel; using System.Data; using System.Drawing; using System.Web; using System.Web.SessionState; using System.Web.UI; using…

阿里重金投数梦工场 布局PaaS动了谁的奶酪

就目前云计算市场来看&#xff0c;巨头的争夺表面上还在IaaS激战&#xff0c;但实际上他们对PaaS也在默默布局。6月8日&#xff0c;PaaS相关服务商数梦工场宣布完成光大实业资本、阿里巴巴等公司共同投资的7.5亿元A轮融资。值得注意的是&#xff0c;阿里巴巴是几位投资方中唯一…

ASP.net中太长的数据缩略显示

问题&#xff1a;用<%# DataBinder.Eval(Container.DataItem,"NewsID"&#xff09;%>显示数据的&#xff0c;如果标题太长了怎么规定字数&#xff0c;多余的用"..."代替解决方法&#xff1a; 1.使用后台代码解决&#xff1a; cs文件代码&#xff1a;…

再见 for 循环!pandas 提速 315 倍~

for是所有编程语言的基础语法&#xff0c;初学者为了快速实现功能&#xff0c;依懒性较强。但如果从运算时间性能上考虑可能不是特别好的选择。本次东哥介绍几个常见的提速方法&#xff0c;一个比一个快&#xff0c;了解pandas本质&#xff0c;才能知道如何提速。下面是一个例子…

UVa 374 - Big Mod

题目大意&#xff1a;计算R BP mod M&#xff0c;根据模运算的性质计算。 正常计算会超时&#xff0c;可以用分治的思想降低时间复杂度。不过如果遇到00&#xff0c;结果...话说00的结果是1吗&#xff1f;忘了都... 1 #include <cstdio>2 3 int powMod(int base, int ex…

微软在慕尼黑设立欧洲首个物联网实验室

北京时间3月30日晚间消息&#xff0c;微软今日在慕尼黑设立了其在欧洲的首个物联网实验室。在此之前&#xff0c;微软已经在雷德蒙(Redmond)总部和中国深圳设立了物联网实验室。 慕尼黑是德国许多知名大企业的故乡&#xff0c;如宝马和西门子等。在此之前&#xff0c;思科和IBM…

linux的strace命令

linux的strace命令 strace 命令是一种强大的工具&#xff0c;它能够显示所有由用户空间程序发出的系统调用。 strace 显示这些调用的参数并返回符号形式的值。strace 从内核接收信息&#xff0c;而且不需要以任何特殊的方式来构建内核。 下面记录几个常用 option . …

明年,我要用 AI 给全村写对联

作者 | 神经小兮来源 | HyperAI超神经春节已经过完&#xff0c;你是否还沉浸在年味里&#xff1f;到腊月二十九、三十&#xff0c;家家户户贴上了 红红的春联&#xff0c;春节就正式拉开了序幕。春联也称为「对联」、「门对」、「楹联」&#xff0c;是汉语所独有的一种艺术形式…

C++实现int与string之间的相互转换

2019独角兽企业重金招聘Python工程师标准>>> c 利用stringstream实现int与string类型的相互转换&#xff0c;记录在此&#xff0c;以备后用 #include<iostream> #include<sstream> #include<string>using namespace std;string add_int(const st…

逆变器的技术创新 让光伏电站更具发展前景

曾几何时&#xff0c;光伏发电因为光照强度和温度的变化&#xff0c;逆变器输出功率波动大&#xff0c;对电网产生冲击&#xff0c;而被称为垃圾电而受到限制。随着技术的进步&#xff0c;光伏逆变器完善了多种保护功能&#xff0c;增加了低&#xff08;零&#xff09;电压穿越…

8个免费实用的C++GUI库

C标准中并没有包含GUI&#xff0c;这也使得C开发图形化界面需要依赖于第三方的库。实际上&#xff0c;图形界面恰恰是C的强项&#xff0c;小到平常使用的各类桌面软件&#xff0c;大到魔兽世界这样的游戏&#xff0c;都是C擅长的地方。C之所以能做到这一点&#xff0c;原因在于…