Skocz do zawartości
ThemBones

Kolejka Priorytetowa W Stl

Rekomendowane odpowiedzi

Męcze się już nad tym od dłuższego czasu i ciągle nie wychodzi.

Jak korzystając z queue.h w STL-u zadeklarować kolejkę priorytetową???

 

Mam np.

 

struct Item{    int some_data;    int value;};
i chciałbym aby mi kolejka przy pop() zwracała rekord o najmniejszym value.

 

Jeżeli zwykłą kolejkę deklaruje przez

 

queue<Item> q;
to co powinienem wstawić w miejsce kropek:

 

priority_queue<Item, ...... > pq;

Jeśli ktoś wie jak to zrobić to bardzo bym był wdzięczny za pomoc - to jest chyba tylko jedna linijka :)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

1. RTFM :P :P

 

2. Jeżeli chcesz w deklaracji kolejki dać tylko jeden argument to musisz mieć w strukturze operator porównania [ mniejszości ]:

struct Item{   int some_data;   int value;   bool operator<(const Item &it) const {     return value > it.value;    }};std::priority_queue< Item > pQ;
3. W innym wypadku drugim argumentem jest typ kontenera do przechowywania danych [ w przykładzie vector ], a w trzecim funkcja porównująca [ raczej struktura - tutaj comp ]:

struct Item{   int some_data;   int value;};struct comp{    bool operator()(const Item &it1, const Item &it2) const {        return it1.value > it2.value;    }   };std::priority_queue< Item, std::vector< Item >, comp > pQ;

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

Ładowanie


×
×
  • Dodaj nową pozycję...