再次相遇sort, 再次的感悟
以前本人曾经在CSDN上面发表过一篇关于sort的用法的文章。
现在摘录如下:
sort 函数是经常要用到的高级函数,用到好处,你会感觉你真的很棒!
但是,第一个问题就是,你十分了解sort函数吗?其实不然。
如果你就不彻底了解它,怎能用好呢?现在让我小露一手吧!
我们可以自定义sort函数呢,当然,它要和结构体共同使用,那样更爽,
它的这个功能主要用在多级排序上,方便死了。
例如:
struct student
{
char name;
int x, y, z;
}stu[1000];
bool check(strdent a, student b)
{
if(a.x > b.x)return true;
if(a.x == b.x && a.y > b.y) return true;
return false;
}
int main()
{
int n;
cin>>n;
for(int i=0; i<n; i++)
cin>>stu[i].name>>stu[i].x>>stu[i].y>>stu[i].z;
sort(stu, stu+n, check)
.........
}
怎么样,有点收获吧。
当然,我所知道是有限的,不可能很全面,还望高手指点几招。
然而,今天又做了一个题目,又遇到了新的问题,下面做出说明。
题目是这样的:
Sample Input
5
ab
gdh
c
gaa
caa
Sample Output
c ab caa gaa gdh
ab c caa gaa gdh
显然,这个是一个十分简单的题目,用上面的方法,立即
就可以解决,但是要说明的是,当你自定义了一个Check
函数以后,就不能用sort原来自身的比较功能。要想用的
话,必须再次定义一下。不然,连编译都通不过。
下面贴出我的样例代码(是通过了的)
#include "iostream"
#include "string"
#include "cstring"
#include "algorithm"
using namespace std;
struct str
{
string substr;
}allstr[1001];
bool Check(str s1, str s2) //这个就是用来解决第一种排序了
{
if(s1.substr.length() < s2.substr.length()) return true;
if(s1.substr.length()==s2.substr.length() && s1.substr.compare(s2.substr)<0) return true;
return false;
}
bool Check1(str s1, str s2) //这个就是sort函数自身所带有功能,但是,在这里还要重新定义一下,不然不可用
{
if(s1.substr.compare(s2.substr) < 0) return true;
return false;
}
int main()
{
int Case;
cin>>Case;
for(int i=0; i<Case; i++)
cin>>allstr[i].substr;
sort(allstr, allstr+Case, Check);
for(int i=0; i<Case-1; i++)
cout<<allstr[i].substr<<" ";
cout<<allstr[Case-1].substr<<endl;
sort(allstr, allstr+Case, Check1);
for(int i=0; i<Case-1; i++)
cout<<allstr[i].substr<<" ";
cout<<allstr[Case-1].substr<<endl;
}
posted on 2011-10-21 10:36 More study needed. 阅读(436) 评论(0) 编辑 收藏 举报
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架