ThemBones Opublikowano 20 Lutego 2005 Zgłoś Opublikowano 20 Lutego 2005 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 :) Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
NetWalker Opublikowano 21 Lutego 2005 Zgłoś Opublikowano 21 Lutego 2005 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; Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...