Проблема справочная, например pair < int, tablero& >
не будет работать в случае копирования внутри make_heap
/ pop_heap
.Чтобы это исправить, нам нужно pair<int, std::reference_wrapper<tablero> >
.comp
и другие реализации должны быть изменены соответствующим образом.
class comp {
public:
bool operator()(pair < int, std::reference_wrapper<tablero> > a, pair < int, std::reference_wrapper<tablero> > b) const {
return a.first > b.first;
}
};
А heap_pop
и make_heap
потребуется объект Compare
.
comp mycomp;
pop_heap(lista_abierta_.begin(),lista_abierta_.end(),mycomp);