STL 中的 set 使用自定義比較運算子

2021-07-01 20:06:12 字數 968 閱讀 4803

set容器模版需要3個泛型引數,如下:

template

class

set;

第乙個t是元素型別,必選;

第二個c指定元素比較方式,預設為less, 即使用<符號比較;

第三個a指定空間分配物件,一般使用預設型別。

因此:

(1) 如果第2個泛型引數你使用預設值的話,你的自定義元素型別需要過載<運算操作;

(2) 如果你第2個泛型引數不使用預設值的話,則比較物件必須具有()操作,即:

bool

operator()(const t &a, const t &b)

#include 

#include

using

namespace

std;

//首先例項化comp aa; 然後aa(lhs, rhs)進行比較

struct comp

};

int main()

輸出:

13 9 6 5 1
#include 

#include

using

namespace

std;

struct comp

};set

my;

set ::iterator it;

int main()

for(it=my.begin();it!=my.end();it++)

cout

<<(*it).id0;}

STL自定義比較器

struct person 自定義的比較器 struct comparebyage sort vec.begin vec.end comparebyage 排序傳入我們自定義的比較器map內部的實現使用的是樹,不能夠直接排序,我們可以將其放在乙個vector中,然後自定義乙個比較器去排序 map m...

STL 自定義比較器

說明 採用sort函式舉例 sort函式能夠接收2個形參 stl中的絕大多數用於查詢 排序的函式的前2個引數基本上都是乙個範圍 first,last 第3個引數一般是乙個比較器仿函式 即 設定大小比較原則compare 下面介紹5種常見的比較器定義手段 自定義普通比較器函式cmp include i...

STL中自定義排序的使用

參考 url url url color red b size large 強烈推薦文章 url b 如果要自己定義stl容器的元素類最好滿足stl容器對元素的要求 b color red b 必須要求 b color quote 1 copy建構函式 2 賦值 操作符 3 能夠銷毀物件的析構函式 ...