首页 > 编程语言 > 详细

细说C++中的sort 函数

时间:2014-10-21 00:33:40      阅读:440      评论:0      收藏:0      [点我收藏+]

我们在算法程序中用的最多的函数就行sort,但经常会忘记如何写比较函数,这里详细做个总结。

1) C++中sort函数的原型

default (1)
template <class RandomAccessIterator>
  void sort (RandomAccessIterator first, RandomAccessIterator last);
custom (2)
template <class RandomAccessIterator, class Compare>
  void sort (RandomAccessIterator first, RandomAccessIterator last, Compare comp);

包含RandomAccessIterator迭代器,自定义的包含Compare函数类;

2) Compare 函数类

Compare 函数类来对元素进行比较,实现排序;因此有以下三种方式来实现Compare类

1. 元素自身包含了比较关系,如int,double等基础类型,可以直接进行比较

greater<int>() 递减, less<int>() 递增,用伪函数可以实现;还包含

2. 元素本身为class或者struct,类内部需要重载< 运算符,实现元素的比较;

 注意事项:bool operator<(const className & rhs) const;  如何参数为引用,需要加const,这样临时变量可以赋值;重载operator<为常成员函数,可以被常变量调用; 

3. 类外实现,用bool (*) ( EleType a1,EleType a2)  或者 bool (*) (const EleType & a1, const EleType & a2) 

4. 函数类实现, 在类中重载()操作符

struct Info {
int val;
Info(int _val):val(_val) {}
bool operator<(Info rhs) const {
return val > rhs.val;
}
};
struct Cmp{
bool operator()(Info a1,Info a2) const {
return a1.val > a2.val;
}
};
bool cmp( Info a1, Info a2) {
 return a1.val < a2.val;
}

细说C++中的sort 函数

原文:http://www.cnblogs.com/purejade/p/4039108.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!