Freigeben über


priority_queue-Klasse

Eine Vorlagencontainer-Adapterklasse, die eine Einschränkung der Funktionalität Zugriff zum obersten Element eines zugrunde liegenden Containertyps restriktiv stellt, der immer oder dem höchsten das größte ist. Neue Elemente können z priority_queue hinzugefügt und das oberste Element des priority_queue kann überprüft oder entfernt werden.

template < 
   class Type,  
   class Container=vector<Type>, 
   class Compare=less<typename Container::value_type>  
> 
class priority_queue

Parameter

  • Typ
    Der im priority_queue zu speichernden Elementdatentyp.

  • Container
    Der Typ des zugrunde liegenden Containers verwendet, um das priority_queue zu implementieren.

  • Compare
    Der Typ, der ein Funktionsobjekt bereitstellt, das zwei Elementwerte als Sortierschlüssel vergleichen kann, um ihre relative Position im priority_queue zu bestimmen. Dieses Argument ist optional und der Container**::value_type***<wenigertypename des binären Prädikats>ist der Standardwert.*

Hinweise

Die Elemente der Klasse Typ vereinbart im ersten Vorlagenparameter eines Warteschlangenobjekts sind mit value_type synonym und müssen den Typ des Elements in der zugrunde liegenden Containerklasse Container übereinstimmen vereinbart vom zweiten Vorlagenparameter. Typ zugewiesen werden muss, damit es möglich, Objekte dieses Typs zu kopieren ist und Werte in Variablen dieses Typs zuzuweisen.

Das priority_queue sortiert die Sequenz, die steuert, indem ein gespeichertes Funktionsobjekt der Klasse Merkmale aufruft. Im Allgemeinen müssen die Elemente der Vorwärtsiteratoren etwas weniger als vergleichbar sein, um diese Sortierung zu erstellen, sodass beliebige zwei Elemente möglicherweise als gleichwertig bestimmt werden (in dem Sinne, dass keins geringer als das Andere ist), oder dass eins geringer als das Andere ist. Dies führt zu einer Sortierung zwischen den nicht gleichwertigen Elementen. Etwas technischer betrachtet ist die Vergleichsfunktion ein binäres Prädikat, das eine strenge schwache Sortierung im mathematischen Sinn verursacht.

Passende zugrunde liegende Containerklassen für priority_queue sind Doppelschlange Klasse und der standardmäßigen Vektor Klasse oder anderen Sequenzcontainer der Vorgänge, die von front, push_back und pop_back und wahlfreier Iterator mit Zugriff unterstützt. Die zugrunde liegende Containerklasse wird innerhalb des Containeradapters gekapselt, der nur den eingeschränkten Satz der Sequenzcontainermemberfunktionen als öffentliche Schnittstelle verfügbar macht.

Das Hinzufügen von Elementen an und das Entfernen von Elementen von priority_queue beide verfügen logarithmische Komplexität. Das Zugreifen auf Elemente in priority_queue aufweist konstante Komplexität.

Es gibt drei Typen Containeradapter, die von STL definiert werden: Stapel, Warteschlangen und priority_queue. Jedes schränkt die Funktionalität ein zugrunde liegender Containerklasse ein, um genau eine gesteuerte Schnittstelle zu einer Standarddatenstruktur bereitzustellen.

  • Stapelklasse unterstützt eine Datenstruktur Last In, First Out (LIFO). Eine gut zu beachten Entsprechung wäre ein Stapel Platten sein. Elemente (Platten) werden nur von der obersten Position im Stapel eingefügt werden, überprüft oder entfernt werden, der das letzte Element am Ende des Basiscontainers ist. Die Einschränkung zum Zugriff nur auf das oberste Element ist der Grund für die Verwendung der Stapelklasse.

  • Warteschlangeklasse unterstützt eine Datenstruktur First In, First Out (FIFO). Eine gut zu beachten Entsprechung würde die Personen sein, die für einen Kassierer ausrichten. Elemente (Personen) werden zur Umkehrung der Zeile entfernt und werden aus der Vorderseite der Zeile hinzugefügt werden. werden die Vorder- und Rückseite einer Zeile überprüft werden. Die Einschränkung zum Zugriff nur auf die Vorder- und back-Elemente ist auf diese Weise der Grund für die Anwendung der Warteschlangeklasse.

  • Die priority_queue Klasse sortiert ihre Elemente, sodass das größte Element immer oben Position befindet. Sie unterstützt Einfügen eines Elements und der Überprüfung und das Entfernen des obersten Elements. Eine gut zu beachten Entsprechung würde die Personen sein, die so ausrichten, wo sie von Alter, Höhe oder ein anderes Kriterium angeordnet werden.

Konstruktoren

priority_queue

Erstellt priority_queue, das leer ist, oder das eine Kopie eines Bereichs eines Basiscontainerobjekts oder anderen priority_queue ist.

Typedefs

container_type

Ein Typ, der den von priority_queue bietet angepasst werden Basiscontainer.

size_type

Eine Ganzzahltyp ohne Vorzeichen, der die Anzahl von Elementen in priority_queue darstellen kann.

value_type

Ein Typ, der den Typ des Objekts gespeichert als Element in priority_queue darstellt.

Memberfunktionen

empty

Testet, ob priority_queue leer ist.

pop

Entfernt das größte Element priority_queue der obersten Position.

push

Fügt ein Element der Prioritätswarteschlange anhand die Priorität des Elements vom Operator <hinzu.

size

Gibt die Anzahl von Elementen in der priority_queue zurück.

top

Gibt einen - zum größten Element oben im priority_queue zurück.

Anforderungen

Header: <Warteschlange>

Namespace: std

Siehe auch

Referenz

Threadsicherheit in der C++-Standardbibliothek

Standardvorlagenbibliothek