Estoy tratando de implementar un montón mínimo en C++ para un tipo de estructura que he creado. Creé un vector del tipo, pero se bloqueó cuando utilicé make_heap, lo que es comprensible porque no sabe cómo comparar los elementos en el montón. ¿Cómo creo un min-heap (es decir, el elemento superior es siempre el más pequeño en el montón) para un tipo de estructura?C++ montón mínimo con tipo definido por el usuario
La estructura es a continuación:
struct DOC{
int docid;
double rank;
};
quiero comparar las estructuras DOC utilizando el miembro de rango. ¿Cómo haría esto?
Intenté utilizar una cola de prioridad con una clase de comparación, pero también se bloqueó, y también me parece tonto usar una estructura de datos que utiliza un montón como base cuando lo que realmente necesito es un montón.
Muchas gracias, BSG
¿Cuál es su definición de "se estrelló"? Seguramente, si no tiene functor de comparación u operador
sellibitze
No, no lo hice, en realidad. Definitivamente no con la cola de prioridad, que tenía un operador sobrecargado definido, y tampoco creo con make_heap. Aunque podría ser que en el último caso obtuve un error de compilación. La primera vez, sin embargo, compiló bien, pero se estrelló en el tiempo de ejecución. – bsg
Si intenta utilizar make_heap con dos argumentos solamente, debe tener un operador
sellibitze