Ich versuche in meinem Projekt nach einem Ersatz in std::vector
zu suchen, und ich habe herausgefunden, dass std::queue
das ist, wonach ich suche.
Ich habe viele Funktionen, die range-based loop
für die Iteration verwenden, und ich versuche, sie so weit wie möglich zu erhalten.
Ich versuche eine range-based loop
in std::queue
zu kompilieren, aber alles, was ich bekomme, sind Kompilierungsfehler
error: keine passende Funktion für den Aufruf von 'begin (std :: queue & amp;)'
Unterstützt std::queue
die Entfernungsbasisschleife nicht?
Ich habe Google search
versucht, aber kein Thema dazu gefunden.
Aktualisierung:
Mein Compiler ist GCC v4.7.1
-std=c++11
ist aktiviert
Und hier ist der fehlerhafte Testcode:
%Vor% Nun, die Antwort ist eigentlich ziemlich einfach: Es gibt keine Funktion begin()
in std::queue
, und es gibt keine Überladung von std::begin
, die eine std::queue
entweder nimmt. Sie können sich die Dokumentation ansehen.
Das Kernproblem ist, dass std::queue
nicht iteriert werden soll. Es existiert, um andere Bedürfnisse zu befriedigen. Wenn Sie wirklich darüber iterieren müssen, sollten Sie nur den zugrunde liegenden Container (standardmäßig std::deque
) verwenden, der die Iteration unterstützt und für den Ihr Code gültig wäre.