Ich muss einen Iterator für das letzte Element in einem std::vector
bekommen.
Wie bekannt, gibt end()
method einen Iterator zurück, der auf das Element "past-the-end" im Vektorcontainer verweist. Kann ich das implementieren, was ich benötige, indem ich end() - 1
verwende?
Soweit ich es verstehe, kann ich back()
method nicht verwenden, da es eine Referenz zurückgibt.
Wenn Sie wissen / haben, dass der Vektor nicht leer ist und C ++ 11 eine Option ist, können Sie std :: prev :
%Vor% Beachten Sie auch, dass die Verwendung von rbegin()
einen umgekehrten Iterator zurückgibt, der sich von einem normalen Iterator unterscheidet.
Wozu brauchst du den Iterator? Wenn es zum Iterieren von ist
Zurück nach vorne können Sie die umgekehrten Iteratoren verwenden ( rbegin
,
%Code%). Wenn es sich um eine Funktion handelt, die einen Iterator erwartet (z. B.
Zum Beispiel, weil Sie möchten, dass alle bis auf die letzte durchlaufen werden
Element), dann können Sie rend
für einen Vektor verwenden. Dieser Wille
arbeiten jedoch nur mit Direktzugriffs-Iteratoren; für andere Arten,
Sie benötigen end() - 1
(wenn Sie C ++ 11 haben) oder die
Entsprechung von Ihrem Toolkit (vor C ++ 11):
(Wenn Sie es nicht bereits haben und C ++ 11 nicht verwenden, fügen Sie es zu Ihr Toolkit.)
Sie können reverse_iterators
verwenden. vec.rbegin()
gibt dir reverse_iterator
, die auf das letzte Element im Vektor zeigen. Mehr dazu: Ссылка