博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++定义比较函数的几种方法
阅读量:4689 次
发布时间:2019-06-09

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

为了说明C++定义比较函数的几种方法,下面将以sort函数为例进行说明。

1.默认的内置比较函数,将按照对象内定义的<运算符由小到大排序

#include 
#include
#include
#include
#include
using namespace std;int main(){ vector
vec{"Hello", "World!", "Zhang San", "Li Si", "C++", "C"}; sort(vec.begin(), vec.end()); copy(vec.begin(), vec.end(), ostream_iterator
(cout, "\n")); return 0;}
2.使用自定义的比较函数cmp,将按照从大到小的顺序排序

bool cmp(const string & a, const string & b){    return a > b;}int main(){    vector
vec{"Hello", "World!", "Zhang San", "Li Si", "C++", "C"}; sort(vec.begin(), vec.end(), cmp); copy(vec.begin(), vec.end(), ostream_iterator
(cout, "\n")); return 0;}
3.使用C++内置的Function object

int main(){    vector
vec{"Hello", "World!", "Zhang San", "Li Si", "C++", "C"}; sort(vec.begin(), vec.end(), greater
()); copy(vec.begin(), vec.end(), ostream_iterator
(cout, "\n")); return 0;}
4.使用C++11新支持的lambda表达式

int main(){    vector
vec{"Hello", "World!", "Zhang San", "Li Si", "C++", "C"}; sort(vec.begin(), vec.end(), [](const string & a, const string & b) {return a > b;}); copy(vec.begin(), vec.end(), ostream_iterator
(cout, "\n")); return 0;}

5.重载()运算符,即自定义一个Function object

class cmp{public:    bool operator () (const string & a, const string & b) {        return a > b;    }};int main(){    vector
vec{"Hello", "World!", "Zhang San", "Li Si", "C++", "C"}; sort(vec.begin(), vec.end(), cmp()); copy(vec.begin(), vec.end(), ostream_iterator
(cout, "\n")); return 0;}

转载于:https://www.cnblogs.com/kunsoft/p/5312727.html

你可能感兴趣的文章
java提高篇(十九)-----数组之二
查看>>
hibernate注解方式实现一对多映射
查看>>
记录利用CSS完美解决前端图片变形问题
查看>>
UVA 10791 最小公倍数的和
查看>>
CodeForces–830B--模拟,树状数组||线段树
查看>>
学习——java内存模型
查看>>
标准输入输出重定向
查看>>
C# 命名管道
查看>>
Chinese_PRC
查看>>
Beta冲刺总结
查看>>
windows 10下让jar文件双击可以运行的解决方法
查看>>
WITH (NOLOCK)提高查询效率
查看>>
MyEclipse搭建安卓环境
查看>>
事件委托的使用
查看>>
异常检测(Anomaly Detection)
查看>>
eclipse常用快捷键
查看>>
Elasticsearch 健康状态处理
查看>>
Winfrom 线程实现 http、https 文件下载 显示下载进度详情
查看>>
PHP获取照片exif信息
查看>>
PHP面相对象中的重载与重写
查看>>