转载自:http://www.cnblogs.com/cj695/p/3863142.html

sort函数在使用中非常好用,也非常简单,而且效率与冒泡或者选择排序不是一个数量级。本文就sort函数在vector中的用法分为sort函数入门用法与自定义comp比较函数比较结构体这两个最基本的功能讲讲其用法:

1、sort入门:

使用sort需要包含algorithm头文件,完整代码如下

#include<iostream>
#include<vector>
#include<algorithm>//貌似可以不用,但最好加上。
using namespace std;
int main()
{
vector<int>v;
v.push_back(13);
v.push_back(23);
v.push_back(03);
v.push_back(233);
v.push_back(113);
sort(v.begin(),v.end());
int i=0;
for(i=0;i<5;i++)
{
cout<<v[i]<<endl;
}
return 0;
}

  

运行结果如下:

3
13
23
113
233
请按任意键继续. . .

可以看到结果是从小到大排序,但如果我需要从大到小排序呢?

2、改写comp从大到小排序。

加入comp函数后代码如下:

#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
bool comp(const int &a,const int &b)
{
return a>b;
}
int main()
{
vector<int>v;
v.push_back(13);
v.push_back(23);
v.push_back(03);
v.push_back(233);
v.push_back(113);
sort(v.begin(),v.end(),comp);
int i=0;
for(i=0;i<5;i++)
{
cout<<v[i]<<endl;
}
return 0;
}

  

运行结果:

233
113
23
13
3
请按任意键继续. . .

为什么会这样呢?比较时sort函数根据comp函数进行判断输的大小,系统默认a<b时返回真,于是从小到大排,而我的comp函数设定为a>b时返回为真,那么最终得到的排序结果也相应的从小到大变成从大到小。简单吧~~

3、对结构体排序

有了comp函数我们就可以实现对任意结构体任意对象进行排序,只需要对应修改comp函数即可实现。代码如下:

#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
struct ss
{
int a,b;
};
bool comp(const ss &a,const ss &b)
{
return a.a<b.a;
}
int main()
{
vector<ss>v;
ss s1,s2,s3,s4,s5;
s1.a=4;s1.b=23;
s2.a=1;s2.b=213;
s3.a=2;s3.b=231;
s4.a=5;s4.b=123;
s5.a=3;s5.b=223;
v.push_back(s1);
v.push_back(s2);
v.push_back(s3);
v.push_back(s4);
v.push_back(s5);
sort(v.begin(),v.end(),comp);
int i=0;
for(i=0;i<5;i++)
{
cout<<v[i].a<<" "<<v[i].b<<endl;
}
return 0;
}

  

比如ss结构体中a代表的是索引号,b代表的是索引对应的值,那么我想按索引排序,通过改写comp函数即可实现。

结果:

1 213
2 231
3 223
4 23
5 123
请按任意键继续. . .

转载 从最简单的vector中sort用法到自定义比较函数comp后对结构体排序的sort算法的更多相关文章

  1. 【转】 从最简单的vector中sort用法到自定义比较函数comp后对结构体排序的sort算法

    sort函数在使用中非常好用,也非常简单,而且效率与冒泡或者选择排序不是一个数量级.本文就sort函数在vector中的用法分为sort函数入门用法与自定义comp比较函数比较结构体这两个最基本的功能 ...

  2. 从最简单的vector中sort用法到自定义比较函数comp后对结构体排序的sort算法

    sort函数在使用中非常好用,也非常简单,而且效率与冒泡或者选择排序不是一个数量级.本文就sort函数在vector中的用法分为sort函数入门用法与自定义comp比较函数比较结构体这两个最基本的功能 ...

  3. 【C++】从最简单的vector中sort用法到自定义比较函数comp后对结构体排序的sort算法

    sort函数在使用中非常好用,也非常简单,而且效率与冒泡或者选择排序不是一个数量级.本文就sort函数在vector中的用法分为sort函数入门用法与自定义comp比较函数比较结构体这两个最基本的功能 ...

  4. 【C艹】关于sort用法之重构cmp(comp)函数的笔记

    众所周知,balabalabalabala············. 所以掌握sort函数(库文件:<algorithm>)的用法还是很有必要的. 一般选手只会简单地用用sort排一排数组 ...

  5. PAT 甲级 1080 Graduate Admission (30 分) (简单,结构体排序模拟)

    1080 Graduate Admission (30 分)   It is said that in 2011, there are about 100 graduate schools ready ...

  6. 小球(总结sort和cmp函数、结构体排序)

    问题 N: 小球(点击) 时间限制: 1 Sec  内存限制: 128 MB                                                               ...

  7. 网上关于sort结构体排序都不完整,我来写一个完整版的 2014-08-09 16:50 60人阅读 评论(0) 收藏

    主要参考sort函数_百度文库, 但是那篇有错误 2.结构体排序,a升,b降,c降 平板视图 打印? 01 #include <iostream> 02 #include <algo ...

  8. <algorithm>里的sort函数对结构体排序

    题目描述 每天第一个到机房的人要把门打开,最后一个离开的人要把门关好.现有一堆杂乱的机房签到.签离记录,请根据记录找出当天开门和关门的人. 输入描述: 每天的记录在第一行给出记录的条目数M (M &g ...

  9. qsort 与sort 对结构体排序实例

    qsort 与sort 对结构体排序实例 #include<bits/stdc++.h> using namespace std; typedef struct { string book ...

随机推荐

  1. 基于DCMTK的DICOM相关程序编写攻略

    2008年09月10日 星期三 15:35 基于DCMTK的DICOM相关程序编写攻略 前言: 由于现在的医学影像设备的图像存储和传输正在逐渐向DICOM标准靠拢,在我们进行医学图像处理的过程中,经常 ...

  2. NYOJ 38布线问题

    http://acm.nyist.net/JudgeOnline/problem.php?pid=38 布线问题 时间限制:1000 ms  |  内存限制:65535 KB 难度:4   描述 南阳 ...

  3. 利用cocostudio库函数 实现左右滑动的背包栏UI (cocos2d-x 2.2.0)

    .h #ifndef __COMMON_COMPONENTS__ #define __COMMON_COMPONENTS__ #include "cocos2d.h" #inclu ...

  4. codeforces A. Group of Students 解题报告

    题目链接:http://codeforces.com/problemset/problem/357/A 题目意思:将一堆人分成两组:beginners 和 intermediate coders .每 ...

  5. Express4--说明

    express4.*;(1) var app = express(): 生成一个express实例 app. (2) app.set('views', path.join(__dirname, 'vi ...

  6. Txx考试(codevs 2894)

    2894 Txx考试  时间限制: 1 s  空间限制: 32000 KB  题目等级 : 黄金 Gold 题解  查看运行结果     题目描述 Description Txx是一个成绩很差的人,考 ...

  7. MVC学习笔记---MVC生命周期及管道

    ASP.NET和ASP.NET MVC的HttpApplication请求处理管道有共同的部分和不同之处,本系列将体验ASP.NET MVC请求处理管道生命周期的19个关键环节. ①以IIS6.0为例 ...

  8. jquery easy ui 1.3.4 窗口,对话框,提示框(5)

    5.1.window(窗口) 窗口我们在程序中会大量的使用,比如我们的添加.编辑都可以使用窗口实现,与winform的程序非常的类似.下面的代码是创建一个基本的窗口 $(function () { $ ...

  9. 蓝桥杯 入门训练 Fibonacci数列(水题,斐波那契数列)

    入门训练 Fibonacci数列 时间限制:1.0s   内存限制:256.0MB 问题描述 Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1. 当n比较大时,Fn也非 ...

  10. STL —— STL六大组件

    注:以下内容摘自 http://blog.csdn.net/byxdaz/article/details/4633826 STL六大组件 容器(Container) 算法(Algorithm) 迭代器 ...