[C++] Jak porządkować malejąco w priority queue?

Mam kolejkę priorytetową do, której mogę wrzucać obiekty. Jak ustawić porządek w tej kolejce, żebym mógł wyciągać z niej elementy o najniższym priorytecie?

I jak wrzucać obiekt do kolejki żebym miał jego wartość i wiedział co to za obiekt?

Gdybym wrzucił same wartości obiektów to miałbym je posortowane ale nie wiedziałbym do czego się odnoszą.

Mam nadzieję, że dość jasno wyjaśniłem o co mi chodzi.

Musisz zdefiniować sposób porównania dla Twojego typu. Np. tak:

struct A

{

    int n;

    A(int n_ = 0) : n(n_) {}

};


struct Aless

{

    bool operator()(const A& l, const A& r)

    {

        return (l.n - r.n) < 0;

    }

};


int main(int argc, char *argv[])

{

    std::priority_queue, Aless> q;

    return 0;

}

Tu i tu masz wszystko opisane.

Musisz w swojej klasie przeciążyć operator “<”:

class liczby

{

  private :

        int liczba;

  public:

        liczby(int n) : liczba(n)

        {}

        liczby(const liczby & copy)

        {

            this->liczba = copy.liczba;

        }

        friend bool operator< (const liczby & pierwsza, const liczby & druga)

        {

            return pierwsza.liczba > druga.liczba; // w zależności: < lub > będzie sie układać w kolejce

        }

        void pokaz() const

        {

            cout<
        }

};


int main(int argc, char **argv)

{

	priority_queue first;

	first.push(9);

	first.push(1);

	first.push(4);

	first.push(8);

	first.push(3);


	while(! first.empty())

	{

		first.top().pokaz();

		first.pop();

	}


	cin.sync();

	cin.get();


	return 0;

}