博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
STL--自定义类型的排序
阅读量:6503 次
发布时间:2019-06-24

本文共 1296 字,大约阅读时间需要 4 分钟。

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

invalid operator <

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

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

参考这个:()

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

1 bool comp(Student s1, Student s2){ 2     if(s1.score==s2.score) 3         return 1; 4     else 5         return s1.id

这两种写法都会报错。

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

1 bool comp(Student s1, Student s2){ 2     if(s1.score==s2.score) 3         return 0; 4     else 5         return s1.id

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

1 #include
2 #include
3 #include
4 #include
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;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

你可能感兴趣的文章
mysql错误代码对应含义
查看>>
JavaScript强化教程——Window Location
查看>>
虚拟机的安装创建和匿名everyone的互通访问
查看>>
TCP协议分析
查看>>
命令补全和别名
查看>>
配置Tomcat架构
查看>>
每隔2 个小时将/etc/services 文件打包备份到/tmp 下(最好每次备份成不同的备份包)...
查看>>
硬盘SMART检测参数详解[转]
查看>>
一篇文章助你理解Python2中字符串编码问题
查看>>
【运维安全】-Fiddler-抓包工具
查看>>
/etc/profile 记录用户登录IP
查看>>
VS2008 编译X64工程出现 error PRJ0003 : 生成 cmd.exe 时出错的解决方案
查看>>
Java 设计模式(1)
查看>>
jquery中的过滤操作
查看>>
RAID简概
查看>>
起点没有选对,想找好的前端工作只能越找越累
查看>>
百度霸屏靠谱吗
查看>>
notepad++ 64位安装json插件JStool
查看>>
MySQL 索引
查看>>
python 代码审计-命令执行漏洞(自己编写的代码)
查看>>