Iterator für das letzte Element eines Vektors

7

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.

    
Yakov 10.09.2013, 14:36
quelle

5 Antworten

8

Am einfachsten ist wahrscheinlich your_vec.rbegin() .

    
Jerry Coffin 10.09.2013, 14:40
quelle
8

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.

    
Daniel Frey 10.09.2013 14:44
quelle
3

Das ist der rbegin() Iterator. Zum Beispiel:

%Vor%

Die Ausgabe ist:

  

3 2 1 0

    
Manu343726 10.09.2013 14:45
quelle
0

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):

%Vor%

(Wenn Sie es nicht bereits haben und C ++ 11 nicht verwenden, fügen Sie es zu Ihr Toolkit.)

    
James Kanze 10.09.2013 14:50
quelle
0

Sie können reverse_iterators verwenden. vec.rbegin() gibt dir reverse_iterator , die auf das letzte Element im Vektor zeigen. Mehr dazu: Ссылка

    
quelle

Tags und Links