STL自定義比較器
對於下邊這個結構我們需要按照age排序
struct Person
{
string name;
int age;
}
//自定義的比較器
struct compareByAge
{
bool operator()(const Person& p1,const Person p2)
{
return p1.age<p2.age;
}
}
//構造vector
vector<Person>vec{p1,p2....};
sort(vec.begin(),vec.end(),compareByAge());//排序傳入我們自定義的比較器
map按照value排序
map內部的實現使用的是樹,不能夠直接排序,我們可以將其放在一個vector中,然後自定義一個比較器去排序
map<string,int>mapTest;
mapTest["zhangsan"]=2;
mapTest["lisi"]=3;
...
vector<pair<string,int>>vec{mapTest.begin(),mapTest.end()};//初始化vector
//定義比較器
struct compare
{
bool operator()(const pair<string,int>&p1,const pair<string,int>&p2)
{
return p1.second<p2.second;//second為value
}
}
//排序
sort(vec.begin(),vec.end(),compare());//呼叫自己的比較器函式
我們來看一個例項:
struct ptr_compare//自定義比較器按照key中的指標指向的內容排序
{
bool operator()(const shared_ptr<string>&p1,const shared_ptr<string>&p2)
{
return *p1>*p2;
}
};
struct comp//自定義比較器按照value排序
{
bool operator()(const pair<shared_ptr<string>,string>&p1,const pair<shared_ptr<string>,string>&p2)
{
return p1.second<p2.second;
}
};
int main()
{
map<shared_ptr<string>,string,ptr_compare>ptr_map;//按照key中的指標指向的資料排序
shared_ptr<string>s1{new string{"hello"}};
shared_ptr<string>s2{new string{"world"}};
shared_ptr<string>s3{new string{"just"}};
shared_ptr<string>s4{new string{"for"}};
shared_ptr<string>s5{new string{"test"}};
ptr_map[s1]="0";
ptr_map[s2]="1";
ptr_map[s3]="2";
ptr_map[s4]="3";
for_each(ptr_map.begin(),ptr_map.end(),[](pair<shared_ptr<string>,string>p)
{
cout<<*p.first<<" "<<p.second<<endl;
});
vector<pair<shared_ptr<string>,string>>vec(ptr_map.begin(),ptr_map.end());//將map中的pair資料放到vector中
sort(vec.begin(),vec.end(),comp());//使用自定義比較器
for_each(vec.begin(),vec.end(),[](pair<shared_ptr<string>,string>p){
cout<<*p.first<<" "<<p.second<<endl;
});
}
相關推薦
STL自定義比較器
對於下邊這個結構我們需要按照age排序 struct Person { string name; int age; } //自定義的比較器 struct compareByA
自定義比較器CustomComparator
mco oid port for list str new com public package com.list; import java.util.ArrayList; import java.util.Comparator; import java.util.Li
創建一個自定義比較器
rac void ger 接口 table string pre ride com 雙列集合: -------------| Map 如果是實現了Map接口的集合類,具備的特點: 存儲的數據都是以鍵值對的形式存在的,鍵不可重復,值可以重復。 ---------------
利用List的sort方法,自定義比較器對類屬性進行排序
JDK1.8之後,List新增了sort方法,使用Comparator作為引數,呼叫者可自定義比較規則。 User user1 = new User(12, "張三"); User use
#資料結構與演算法學習筆記#劍指Offer30:把陣列排成最小的數 + 自定義比較器 + 測試用例(Java、C/C++)
2018.10.6 1.求全排列最小。事實上用全排列硬剛這道題確實是最直接的辦法,因為乍一眼看上去實在不好歸納數字之間的順序關係,全排列具體實現原理可以參考上述文章。 2.自定義比較器。為什麼說
利用Collections.sort 自定義比較器 ,對集合元素時間進行排序
1.自定義比較器public class SortClass implements Comparator { @Override public int compare(Object arg0, Object arg1) { ProjectInfo Projec
Java中的equals方法和自定義比較器
class Student { private String name; private int age; Student(String name,int age) { this.name = name; this.age = age; } public S
淺談JavaScript--Array陣列sort()排序方法與自定義比較器的使用
陣列的排序的重要性不必多說,到處可見,現在來說說sort()方法的使用與自定義比較器 sort()方法:預設將陣列中的所有元素轉為字串後再排列(預設是升序),用來排列字串型別的元素 比如一個數組:
Collections之sort的兩個方法(自然排序和自定義比較器排序)
Collections是個服務於Collection的工具類(靜態的),它裡面定義了一些集合可以用到的方法。 本文演示了Collections類裡sort()的兩個方法。第一種只需傳入被排序的集合,便會為它自然排序。但有時我們需要自定義排序的方式,這是我們就得定義一個比較器
Java自定義比較器實現中文排序
compareTo 方法 compareTo()是兩個字串物件比較大小,返回一個整數值,如果呼叫字串物件大,返回正整數,反之,返回負整數。相等則返回0。compareTo()是兩個字串物件按ASCII比較大小(漢字是Unicode),返回一個整數值,如果呼
C#排序函式和自定義比較器
在C#中,要比較兩個陣列,可以呼叫 System.Array.Sort(...)方法 List等也有Sort()方法 有兩種方式可以為自己的類提供排序; 1.類實現介面 IComparable 2.建立比較器類,該類實現介面IComparer 第二種方法的優點是,你可
Java 自定義比較器
Comparator 和 Comparable 相同點 Comparator 和 Comparable都是java的介面,並且是用來對自定義的class比較大小的。 對於自定義類如:public class Person{ String name;
在struts2中配置自定義攔截器放行多個方法
return med ttr limit ring req tac cat invoke 源碼: 自定義的攔截器類: //自定義攔截器類:LoginInterceptor ; package com.java.action.interceptor; import j
SpringMVC 自定義轉換器
del 轉化 string sna 問題 print request package type 實踐SpringMVC轉化器是遇到的問題:表單提交沒有經過自定義轉換器(解決:表單用post方式提交) 自定義轉化器代碼 package cn.liangqinghai.
JAVAEE——struts2_04:自定義攔截器、struts2標簽、登陸功能和校驗登陸攔截器的實現
strac htm logs transacti 標識 area 返回 ftw jsp 一、自定義攔截器 1.架構 2.攔截器創建 //攔截器:第一種創建方式 //攔截器生命周期:隨項目的啟動而創建,隨項目關閉而銷毀 public class MyInt
struts2學習(6)自定義攔截器-登錄驗證攔截器
back tps class res urn fff .com space war 需求:對登錄進行驗證,用戶名cy 密碼123456才能登錄進去; 登錄進去後,將用戶存在session中; 其他鏈接要來訪問(除了登錄鏈接),首先驗證
手機影音第六天 自定義播放器頁面的實現(按鈕暫時未監聽)
手機影音第六天 自定義播放器布局以及橫豎屏切換播放器時的問題解決 目前進度的項目源代碼托管在裏碼雲上,地址如下: https://git.oschina.net/joy_yuan/MobilePlayer 感興趣的可以去下載看看,多多支持
自定義攔截器判斷用戶是否有權限訪問
indexof mon com source ora extend ide isa att 1、關於權限系統,對於用戶是否有權限對系統進行訪問,設置自定義攔截器,來攔截用戶的請求 1 package org.slsale.interceptor; 2 3 impo
TreeSet排序,存儲自己定義對象,自己定義比較器演示樣例
strlen 覆蓋 () num imp rgs com 哈希 ash Set:無序。不能夠反復元素。 |--HashSet:數據結構是哈希表。線程是非同步的。 保證元素唯一性的原理:推斷元素的hashCode值是否同樣。 假設同樣,還會繼續推斷
使用html5中video自定義播放器必備知識點總結以及JS全屏API介紹
標簽 quest htm round internet tel ren per 全屏 一、video的js知識點: controls(控制器)、autoplay(自動播放)、loop(循環)==video默認的; 自定義播放器中一些JS中提供的方法和屬性的記錄: 1、pla