簡體   English   中英

QMap是否支持自定義比較器功能?

[英]Does QMap support custom comparator functions?

我找不到為QMap設置自定義比較器函數的方法,就像我可以用於std::maptypename _Compare = std::less<_Key>其模板參數的一部分)。

QMap有辦法設置嗎?

它沒有記錄( 我認為這是一個錯誤 ),但你可以專門為你的類型設置qMapLessThanKey模板函數(參見源代碼 )。 這將允許您的類型使用其他函數而不是operator<

template<> bool qMapLessThanKey<int>(const int &key1, const int &key2) 
{ 
    return key1 > key2;  // sort by operator> !
}

盡管如此,std :: map的優點是你可以為每個地圖指定一個不同的比較器,而在這里你不能(所有使用你的類型的地圖都必須看到那個專業化,否則一切都會崩潰)。

不,據我所知,QMap沒有這個功能,它需要擁有operator <的關鍵類型,所以如果你真的需要比較功能,你就會被std :: map困住。

QMap的密鑰類型必須提供operator<() QMap使用它來保持項目的排序,如果x <y和y <x都不為真,則假設兩個鍵x和y相等。

如果是,重載operator<()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM