2013-11-28 11 views
5

Ich habe eine Klasse sagen class stuff{ int id; int ammount; int quality; /*...*/ }; und ich habe eine vector<stuff> items. Ich möchte meine Sammlung sortierbar machen durch stuff::id und suchbar durch staff::id. Ich könnte es über find_if tun und sortieren mit einigen speziellen stl Lambda-basierte Sortierung Funktion. Aber ich möchte alles standardmäßig im Vektor haben. Ich habe gehört, es gibt eine Möglichkeit, Hashing-Funktion zu erstellen, aber ich suchte rundherum konnte es nicht finden ... So wie Klasse sortierbar/durchsuchbar innerhalb Vektor mit Standard-Vektor-Funktionen zu machen?Wie man sortierbare Klasse innerhalb des Vektors bildet?

+0

Definiere 'stuff :: operator <(const stuff & that)', die 'this-> id

+1

Können Sie statt dessen 'std :: map ' verwenden? – Nawaz

+0

Punkt hier ist zu bekommen, wie man Dinge tun kann, um meine Klasse auch als 'map'' pair :: first' zu verwenden, um nach allen Basiscontainern nach Klassen zu suchen, die durch meine Geschäftslogik definiert sind - nicht allgemeine ints und Saiten. – DuckQueen

Antwort

6

Zum Sortieren, implementieren eine operator<, die zwei Strukturen vergleicht:

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

Dies ist der Operator, der für die meisten aller Sortierung standardmäßig verwendet wird.

Für die Überprüfung der Gleichheit, erstellen Sie ähnlich eine operator==.

Verwandte Themen