2012-12-29 10 views
5

Quindi, nella documentazione C++ nell'intestazione c'è una bella funzione che consente di ordinare i vettori. Ho una classe Person. Ho un vettore di puntatori agli oggetti di quella classe (vector<Person*>) e voglio confrontare le persone con parametri diversi, ad esempio età, lunghezza del nome e così via.<algorithm> ordinamento vettoriale con oggetti?

Ho già funzioni che restituiscono le variabili necessarie ma non sono sicuro di come farlo. Questo è il link per la funzione di ordinamento vettore in C++ di riferimento http://www.cplusplus.com/reference/algorithm/sort/

+0

@Ripounet se hai intenzione di suggerire delle modifiche a una domanda, ti preghiamo di correggere tutto non solo il refuso nel titolo. Dai un'occhiata alle revisioni per vedere cos'altro è stato necessario correggere su questo post –

+0

@KateGregory OK – Deleplace

risposta

14

che è così semplice:

struct student 
{ 
    string name; 
    string grade; 
}; 

bool cmd(const student & s1, const student & s2) 
{ 
    if (s1.name != s2.name) return s1.name < s2.name; 
    return s1.grade < s2.grade; 
} 

Poi:

vector<student> s; 
sort(s.begin(), s.end(), cmd); 

Gli studenti saranno ordinati alphabatically. Se due studenti hanno lo stesso nome, saranno ordinati usando il loro voto.

+0

Grazie! Era quello che stavo cercando. – Bloodcount

+0

Grazie! Per favore considera di scegliere la risposta come la migliore se ritieni che risolva il tuo problema. –

+0

Lo farò tra 3 minuti dopo che il timer di sistema me lo consente. – Bloodcount

-1

Provare a eseguire l'override dell'operatore come "<", ">" utilizzando le stesse proprietà degli oggetti. Successivamente è possibile ridefinire un'operazione di ordinamento.

Problemi correlati