map和set容器自定義比較函式

2021-08-07 11:28:10 字數 629 閱讀 9016

將元素插入map和set中時,容器會根據設定的比較函式將該元素放到相應節點上,在定義容器時,如果沒有指定比較函式,那麼採用預設的比較函式,及按照鍵值由小到大的順序插入元素,很多情況下,需要自己編寫比較函式,

map和set內部的資料結構都是紅黑樹,所以比較函式是一致的,編寫方法有兩種:

(1)如果元素不是結構體,那麼可以編寫比較函式,下面程式編寫的比較規則是按照鍵值由大到小順序插入map:

#include#includeusing namespace std;

struct mycomp

};int main()

bool operator < (const info &a) const

};int main(){

info a("a",99),b("b",98),c("c",65),d("d",78);

sets;

s.insert(a);

s.insert(b);

s.insert(c);

s.insert(d);

set::iterator it;

for(it = s.begin();it!=s.end();it++){

cout<<(*it).name <<":"<<(*it).score<

map自定義比較函式

from template class alloc alloc 第乙個引數key是關鍵字型別 第二個引數t是值型別 第三個引數compare是比較函式 仿函式 第四個引數是記憶體配置物件 map中的關鍵字,起碼必須有 這個比較操作符。我們知道,int,float,enum,size t等等簡單關鍵字...

OpenLayer對容器Map自定義座標系

openlayer原則上只支援epsg 4326和epsg 3857,其中epsg 3857是建立容器時,如果不宣告,預設使用的座標系,那麼如果需要別的座標系的話,就需要自己定義和配置,一般情況下,自定義座標系都是可以在epsg.io上面找到對應的epsg所對應的詳細引數 下面時配置方法 1 引入p...

set自定義排序

set一般插入元素時,預設使用關鍵字型別的 運算子來比較兩個關鍵字,故一般插入後為公升序,但是針對自定義資料結構,如結構體,沒有 運算子,故無法進行比較。針對自定義資料結構或者說自定義set排序規則有如下幾種方法 在自定義結構體中過載 則可以實現預設排序,示例 如下 include include ...