Ich habe Anforderung wie folgt. Für eine Funktion bekomme ich Eingabe als Zahlenstrom. Ich meine, die Funktion wird immer mit einer einzigen Nummer bei jedem Anruf angerufen. Ich verwende Warteschlange zum Speichern von Zahlenströmen. Ich muss einen gesammelten Satz von Zahlen nur verarbeiten, wenn eine Bedingung erfüllt ist. Wenn die Bedingung nicht erfüllt ist, muss ich alle Elemente in die Warteschlange werfen und dann neue Nummern darin speichern. Zum Leeren der Warteschlange konnte ich die clear() -Methode nicht finden. Ich schleife also wie unten.Warum std :: queue unterstützt die Funktion clear() nicht?
while(!q.empty())
q.pop();
Ich habe effizienten Algorithmus Warteschlange bei
How do I clear the std::queue efficiently?
Meine Frage ist für das Clearing: Warum Warteschlange nicht klar unterstützt() Funktion?
Wenn Deque und Vektor die clear() - Methode unterstützen, was ist die technische Schwierigkeit, sie für die Warteschlange zu unterstützen?
Oder ist meine obige Verwendung sehr selten und wird daher nicht unterstützt? Danke.
+1, obwohl, effiziente Clearing * ist * möglich, siehe meine Antwort. – sellibitze
Also ich denke, 'std :: queue' ist eine eingeschränkte Warteschlange für sehr begrenzte Verwendungszwecke, ist die Nachricht? – bobobobo
Der Grundgedanke hinter dem Warteschlangenadapter ist, dass Elemente, die eingefügt werden, an einem bestimmten Punkt extrahiert werden müssen und bei einer Löschoperation mit mehreren Elementen nicht verloren gehen. Ist das sinnvoll ?Nicht unbedingt, da es sowieso gelöscht werden kann ... – SirDarius