posts - 225, comments - 62, trackbacks - 0, articles - 0
   :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

STL学习笔记--sort,less

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");
}
只有注册用户登录后才能发表评论。