2013-07-04 7 views

risposta

14

Non è documentato (and it's a mistake, I think), ma in è possibile specializzare la funzione modello qMapLessThanKey per i tipi (vedere the source). Ciò consentirà il vostro tipo di usare qualche altra funzione piuttosto che operator<:

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

Tuttavia, std :: map ha il vantaggio che è possibile specificare un comparatore diverso per ogni mappa, mentre qui non è possibile (tutte le mappe che usano il tuo tipo devono vedere quella specializzazione, o tutto andrà a pezzi).

1

No, per quanto ne so QMap non ha quella funzionalità richiede che sia il tipo di chiave per avere l'operatore <, quindi sei bloccato con std :: map se hai davvero bisogno di quella funzionalità di confronto.

1

QMap Il tipo di chiave deve fornire operator<(). QMap lo utilizza per mantenere ordinati gli elementi e presuppone che due chiavi xey siano uguali se né x < y né y < x è true.

In caso di sovraccarico operator<().