2012-03-22 19 views
7

Tengo problemas ... No estoy seguro de entender la documentación de STL. Digamos que tengo esto:cómo insertar en el conjunto 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; 
} 

¿Cómo inserto struct foo's en el conjunto usando mi propia estructura de comparación?

+1

¿Intentó utilizar el método 'insert' todavía? ¿Qué error obtuvo? – hochl

Respuesta

13

Puede usar el método set::insert, no hay nada más que hacer. Por ejemplo,

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

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

fooset.insert (foo); // así? y se insertará en la posición correcta? –

+0

Como he mostrado en el código de ejemplo, 'fooset.insert (f1);', al insertar 'set' usará el functor de comparación proporcionado por usted para determinar la posición correcta del objeto. – Naveen

+3

@JayKim Si depende de la posición de un elemento en un conjunto (aunque bien definido en el STL) para hacer algo, probablemente esté utilizando una estructura de datos incorrecta. – manasij7479

Cuestiones relacionadas