std::deque
unterstützt das effiziente Einfügen und Entfernen am Anfang und Ende der Datenstruktur. Sie können Warteschlangenvorgänge manuell mit push_back
und pop_front
ausführen.
Eine Warteschlange verwendet intern standardmäßig eine Deque. Es ist ein Wrapper, der nur Warteschlangenoperationen verfügbar macht (weshalb Sie nicht darüber iterieren können). Ich fragte eine ähnliche Frage während zurück, und die beste Antwort gab mir einen guten Einblick in die reale Verwendung von std::queue
. Man sollte std::queue
nicht verwenden, weil man eine Warteschlange benötigt, sondern um zu verdeutlichen, dass nur warteschlangenartige Operationen für eine gegebene Datenstruktur zulässig sind. Es klingt, als ob Sie mehr Freiheit als das brauchen, also gehen Sie mit deque, list oder einer anderen Struktur mit O (1) an beiden Enden einfügen und entfernen.
std::queue
ist ein Containeradapter. Es verwendet std::deque
als den zugrunde liegenden Standardcontainer. Der Zugriff auf diesen Container ist nicht möglich und daher keine Iteration.
Am besten verwenden Sie std::deque
oder std::list
und verwalten das Warteschlangenverhalten selbst. Möglicherweise stellen Sie Ihren eigenen Wrapper dar.