將元素插入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 ...