2013-11-28 9 views
5

Ho una classe dire class stuff{ int id; int ammount; int quality; /*...*/ }; e ho un vector<stuff> items. Voglio rendere la mia collezione ordinabile per stuff::id e ricercabile per staff::id. Potrei farlo tramite find_if e ordinare usando qualche funzione speciale di stl lambda di ordinamento. Eppure voglio avere tutto per impostazione predefinita in vettoriale. Ho sentito che c'è un modo per creare la funzione di hashing, ma ho cercato tutto intorno non riuscivo a trovarlo ... Quindi, come rendere la classe ordinabile/ricercabile all'interno del vettore con le funzioni vettoriali predefinite?Come rendere la classe ordinabile all'interno del vettore?

+0

Definire 'stuff :: operator <(const stuff & that)' che restituisce 'this-> id

+1

Potresti usare 'std :: map '? – Nawaz

+0

Il punto qui è ottenere come fare cose come essere in grado di usare la mia classe anche come 'map'' pair :: first', per cercare tutti i contenitori di base per classe definita dalla mia logica di business - non generali e stringhe. – DuckQueen

risposta

6

selezionare, implementare un operator< che confronta due strutture:

bool operator<(const stuff& s1, const stuff& s2) 
{ 
    // Your comparison here 
} 

Questa è l'operatore che viene utilizzato per impostazione predefinita per la maggior parte di tutti smistamento.

Per il controllo di uguaglianza, creare uno operator== allo stesso modo.

Problemi correlati