概述
有时候需要按照结构体中某项数值进行排序,而结构体中的其他数值则不能改变。例如,按照成绩的高低对学生进行排序,而学生这一结构体中包含了学号,姓名等其他信息。使用std::sort就很方便
CODE
struct edge{ int from, to, cost; };
bool comp(const edge &e1, const edge &e2)
{
return e1.cost < e2.cost;
}
void sortFun()
{
edge es[MAXVEX];
srand((unsigned)time(NULL));
int N = 9;
for (int i = 0; i < N; ++i)
{
es[i].from = i;
es[i].to = rand() % 9;
es[i].cost = rand() % 28;
}
for (int i = 0; i < N; ++i)
{
printf("%d %d %dn", es[i].from, es[i].to, es[i].cost);
}
printf("************************n");
sort(es, es + N, comp);
for (int i = 0; i < N; ++i)
{
printf("%d %d %dn", es[i].from, es[i].to, es[i].cost);
}
}
#include<stdio.h>
#include<stdlib.h>
#include <cstring>
#include <cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
struct t_stu {
int age;
int score;
char name[104];
};
inline bool Cmp(const t_stu & a, const t_stu & b){
if(a.score == b.score){
if(strcmp(a.name, b.name) == 0){
return a.age > b.age;
}
return strcmp(a.name, b.name) > 0;
}
return a.score > b.score;
}
int main(void){
int n;
t_stu tStuRec[1001], *tp;
while(~scanf("%d", &n))//注意输入,OJ常用
{
for(tp = tStuRec; n--; ++tp){
scanf("%s %d %d", tp->name, &tp->age, &tp->score);
}
sort(tStuRec, tp, Cmp);
while(--tp >= tStuRec){
printf("%s %d %dn", tp->name, tp->age, tp->score);
}
}
return 0;
}
最后
以上就是淡然身影为你收集整理的std::sort的妙用(1)的全部内容,希望文章能够帮你解决std::sort的妙用(1)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复