c 之greater和less在stl中運用

2021-10-02 15:48:34 字數 1129 閱讀 9125

greater< type >()和less< type >()是functional下的兩個仿函式,都過載了操作符,它們的原始碼如下:

greater

/// one of the @link comparison_functors comparison functors@endlink.

template

<

typename _tp>

struct greater :

public binary_function<_tp, _tp,

bool

>

};

less

/// one of the @link comparison_functors comparison functors@endlink.

template

<

typename _tp>

struct less :

public binary_function<_tp, _tp,

bool

>

};

可見greater是從大到小排,less是從小到大排。

stl中sort(begin, end),lower_bound( begin,end,num)和upper_bound( begin,end,num)預設的是從小到大排,如果要從大到小排,在最後的引數上寫上「greater< int >()」或者寫自定義比較函式:

bool cmp(const int& a,const int& b)

greater< int>()表示內建型別從大到小排序,比如說原序列是1,2,4,7,15,34,在greater< int>()的表示下,1>2>4>7>15>34,

優先佇列priority_queue< type >和上面的不一樣,它的預設的取出順序是從大到小的,相當於less,從小到大就要寫成

priority_queue <

int,vector<

int>

,greater<

int>

> q;

greater 和less 的使用

greater和less是標頭檔案中定義的兩個結構。下面看它們 的定義,greater和less都過載了操作符 cpp view plain copy template struct greater emplate ty struct greater public binary function t...

greater 和less 的使用

greater和less是標頭檔案中定義的兩個結構。下面看它們 的定義,greater和less都過載了操作符 template struct greater emplatestruct greater public binary function ty,ty,bool template struc...

STL中less和greater的用法

優先佇列和sort函式中都有less和greater,但less和greater在優先佇列和sort中的用法有些不同 這裡以int為例 一 優先佇列中的less和greater 以int為例先宣告一下 priority queueq 預設從大到小出隊 priority queue,less q1 從...