Como implementar o método de classificação para uma fila de prioridade c ++ com ponteiros
Minha fila de prioridade declarada como:
std::priority_queue<*MyClass> queue;
class MyClass {
bool operator<( const MyClass* m ) const;
}
não está classificando os itens na fil
O que está errado? Eu não gostaria de implementar uma classe diferente (comparar).
esumo da resposta:
O problema é que os endereços dos ponteiros são classificados. A única maneira de evitar isso é uma classe que 'compara os ponteiros'.
gora implementado como:
std::priority_queue<*MyClass, vector<*MyClass>, MyClass::CompStr > queue;
class MyClass {
struct CompStr {
bool operator()(MyClass* m1, MyClass* m2);
}
}