PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : 2Fragen: Sinn Iterator (Vektoren) und Unterschied zwischen . und ->



DoS
03.08.2009, 10:00
Hallo,
meine Frage, wie man aus dem Threadnamen schon lesen kann, ist, welchen Sinn ein Iterator bei Vektoren hat. Stattdessen könnte ich doch einfach einen "normalen" Zeiger nutzen, der auf ein Element im Vektor zeigt?

Und meine zweite Frage: Wenn man zum Beispiel bei Klassen Funktionen hat, dann führt man die ja so aus: Klassenname.Funktion . Manchmal sehe ich das aber auch mit Klassenname->Funktion.
Wann ist was richtig bzw. wann muss welches Zeichen verwenden?

Bitte erklärt mir das möglichst einfach, damit ich auch noch mitkomme (gedanklich).

MfG. -DoS

Sawyer
03.08.2009, 10:26
Und meine zweite Frage: Wenn man zum Beispiel bei Klassen Funktionen hat, dann führt man die ja so aus: Klassenname.Funktion . Manchmal sehe ich das aber auch mit Klassenname->Funktion.
Wann ist was richtig bzw. wann muss welches Zeichen verwenden?Der Pfeil wird dann verwendet , wenn es sich um einen Zeiger handelt , der auf eine klasse zeigt , mit dem Pfeil kann man also auf die Eigenschaften zugreifen.
Der Punkt wird dann verwendet , um auf die Eigenschaften eines ganz normalen Klassen Objekts zuzugreifen.

PS: Falls ich mit irgendwas falsch liegen sollte , korrigiert mich :p

DoS
03.08.2009, 13:30
Danke erstmal für die Antwort. Verbleibt noch die erste Frage



meine Frage, wie man aus dem Threadnamen schon lesen kann, ist, welchen Sinn ein Iterator bei Vektoren hat. Stattdessen könnte ich doch einfach einen "normalen" Zeiger nutzen, der auf ein Element im Vektor zeigt?



MfG. -DoS

Qgel
06.08.2009, 00:18
Noch zur 1. Frage:

*(x).f
ist das gleiche wie

x->f

DoS
06.08.2009, 12:01
Das war die zweite Frage :D. Aber danke für die Erweiterung :D

Wie gesagt, ich brauche noch die Lösung zur ungelösten Frage :)

gruß

blackberry
06.08.2009, 13:22
Ich wollte das eigentlich schon länger mal sagen, nur dann war Free-Hack ziemlich langsam und meine Antwort kam nicht an... nochmal schreiben war mir dann zu doof.

Im Grunde hast du 3 Möglichkeiten dir die Elemente eines vectors anzuschauen:
- Pointer
- Zählerschleife (for(int zaehler = 0; zaehler < blah; zaehler++))
- Iteratoren
(Iteratoren sind intern übrigens meißt als Pointer implementiert)

Im Grunde sind alle gleichwertig und können parallel verwendet werden.
Praktisch bei Iteratoren ist jedoch, dass sie übersichtlicher sind.
Bei normalen Pointern musst du viel casten und bei Zählerschleifen wird der Term manchmal sehr lang (sagen wir du hast einen mehrdimensionalen Vector: meinVector[a][b][c][d][e]).

Zudem benutzen viele Funktionen der Klassen vector und string Iteratoren.

Also zusammenfassend:
Es ist im Grunde egal was du benutzt, aber Iteratoren sind praktischer und werden von den Standardklassen benutzt.

DoS
06.08.2009, 15:03
Danke BlackBerry auf dich ist, wie immer eigentlich Verlass, dass selbst die "tiefsten" Threads geklärt werden.

Schade eigentlich, dass nicht so viele Leute im C++ Forum aktiv sind. Aber nein, die müssen ja alle auf .NET "programmieren" (bei den meisten ist es das nicht :D )

MfG. -DoS