Posted on 2006-05-24 16:12
魔のkyo 阅读(3117)
评论(0) 编辑 收藏 引用 所属分类:
STL
sort算法的原型如下,使用sort需要包含algorithm头文件
template <class
RandomAccessIterator>
void sort(RandomAccessIterator first, RandomAccessIterator last);
template <class RandomAccessIterator, class
StrictWeakOrdering>
void sort(RandomAccessIterator first, RandomAccessIterator last,
StrictWeakOrdering comp);
将sort算法作用于一个存放自定义对象的容器时,如果使用第一种调用方式,那么comp默认使用
less函数对象(function object)进行比较,less函数对象需要自定义的对象(即:容器中的对象)有"operator <"运算。
同样,greater函数对象需要使用对象的"operator >"运算。
(less_equal,greater_equalye依此类推)
#include <iostream>
#include <cstdlib>
#include <vector>
#include <algorithm>
using namespace std;
class C{
int data;
public:
C(int n=0){data=n;}
friend bool operator < (const C &a, const C &b);
friend ostream& operator << (ostream& stream , const C &ob);
};
inline bool operator < (const C &a, const C &b)
{
return (a.data < b.data);
}
ostream& operator << (ostream& stream , const C &ob)
{
stream<<ob.data;
return stream;
}
int main ()
{
int i;
vector<C> a(10);
for(i=0;i<10;i++){
a[i]=i;
}
sort(a.begin(),a.end(),less<C>() );
for(i=0;i<10;i++){
cout<<a[i]<<endl;
}
system("pause");
}