Anzeige:
Ergebnis 1 bis 6 von 6

Thema: Vector: Iterieren über Iterator oder i<v.size()

  1. #1
    Registrierter Benutzer Avatar von DAB268
    Registriert seit
    18.12.2006
    Beiträge
    55

    Vector: Iterieren über Iterator oder i<v.size()

    Hallo.

    Mich würde mal interessieren, was die elegantere Lösung für das iterieren eines Vectors ist:

    for (Iterator<Vector> iter = v.iterator(); iter.hasNext(){}

    ODER

    for (int i = 0; i < v.size(); i++){}

    MfG
    DAB268

  2. #2
    Registrierter Benutzer Avatar von jeebee
    Registriert seit
    01.01.2005
    Ort
    Bern || Zürich
    Beiträge
    540
    Code:
    Vector<T> v;
    Es kommt drauf an was du machen willst:

    Wenn du den Inhalt des Vectors während dem Iterieren verändern willst (Elemente löschen/hinzufügen) dann musst du die Variante mit dem Iterator nehmen.

    Sonst gibts die Varianten
    Code:
    for (int i = 0; i < v.size(); i++) {
        // do stuff using the current index and element
    }
    wenn du den Index des aktuellen Elements brauchst oder
    Code:
    for (T elem : v) {
        // do stuff using the current element
    }
    wenn du den Index nicht brauchst.

    HTH

    --jeebee
    my very own 128 bit integer
    C4 D3 B8 A8 9E A0 C6 EC 7D EC A8 15 28 D1 92 58
    more information

  3. #3
    Registrierter Benutzer Avatar von DAB268
    Registriert seit
    18.12.2006
    Beiträge
    55
    Zitat Zitat von jeebee Beitrag anzeigen
    Wenn du den Inhalt des Vectors während dem Iterieren verändern willst (Elemente löschen/hinzufügen) dann musst du die Variante mit dem Iterator nehmen.
    Hi.

    Im meinem Fall ändere ich zwar etwas, allerdings direkt im Objekt, welches der Vector enthält.

    z.B. v.get(i).set(i);

    In diesem Fall müsste eine Lösung ohne Iterator doch auch ausreichend sein, das der Index des Vectors nicht verändert wird oder?

    Greetz
    DAB268

  4. #4
    Registrierter Benutzer Avatar von jeebee
    Registriert seit
    01.01.2005
    Ort
    Bern || Zürich
    Beiträge
    540
    Ja, dazu brauchst du keinen Iterator.
    my very own 128 bit integer
    C4 D3 B8 A8 9E A0 C6 EC 7D EC A8 15 28 D1 92 58
    more information

  5. #5
    Registrierter Benutzer Avatar von mwanaheri
    Registriert seit
    28.10.2003
    Ort
    Bayreuth
    Beiträge
    569

    iterieren

    noch eleganter finde ich es ja, wenn man den Vektor rückwärts durchläuft. Das hat zwei Vorteile:
    1) man muss nicht bei jedem Durchlauf die Vektorgröße abfragen, sondern nur bei der Initialisierung der Kontrollvariable (i)
    2) man kann auch Elemente löschen, ohne ins Stolpern zu kommen.
    Das Ziel ist das Ziel.

  6. #6
    Registrierter Benutzer Avatar von BlueJay
    Registriert seit
    27.08.2004
    Beiträge
    825
    Da am Vektor selbst nichts gemacht wird, sondern dort wohl nur Referenzen auf Objekte stehen, ist es Hose wie Jacke.
    Die 2.for-Schleife halte ich für schneller, obwohl ich vermute, dass der JIT die beiden Varianten egalisiert.

    Gruß,
    Ulrike
    Eigentlich ganz einfach, wenn man's weiss!

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •