2012-03-22 13 views
7

Ho problemi ... Non sono sicuro di aver compreso la documentazione STL. Diciamo che ho questo:come inserire in set stl?

#include <set> 
... 

struct foo 
{ 
    int bar; 
}; 

struct comp 
{ 
    inline bool operator()(const foo& left,const foo& right) 
    { 
     return left.bar < right.bar; 
    } 
}; 

int main() 
{ 
    std::set<foo,comp> fooset; // Uses comparison struct/class object comp to sort the container 

    ... 

    return 0; 
} 

Come inserisco struct foo di nel set con il mio struct di confronto?

+1

Hai provato a utilizzare ancora il metodo 'insert'? Che errore hai ottenuto? – hochl

risposta

13

È possibile utilizzare il metodo set::insert, non c'è nient'altro da fare. Ad esempio,

foo f1, f2; 
f1.bar = 10; 
f2.bar = 20; 

fooset.insert(f1); 
fooset.insert(f2); 
+0

fooset.insert (foo); // così? e verrà inserito nella posizione corretta? –

+0

Come ho mostrato nel codice di esempio, 'fooset.insert (f1);', mentre si inserisce 'set' userà il funtore di confronto fornito da te per determinare la posizione corretta per l'oggetto. – Naveen

+3

@JayKim Se si sta dipendendo dalla posizione di un elemento in un set (ben definito nell'STL) per fare qualcosa, probabilmente si sta utilizzando una struttura dati errata. – manasij7479