Iterator-Definition
-
Salve,
mir fehlt gerade ein etwas tiefergehendes Grundverständnis:
Wenn ich einenvector<int> vInt;habe, dann kann ich einen Iterator dafür folgendermaßen definieren:
vector<int>::iterator vIntIterator;Warum kann ich nicht einfacher
vInt.iterator vIntIterator;schreiben?
-
Weil "iterator" eine nested class ist und kein Datenmember, sie liegt innerhalb des Klassentemplates "vector", und um an den Namen zu kommen, brauchts halt den Scope-operator "::".
-
Wenn dir das zu lang ist kannst du dir ja einen typedef basteln.
-
arghonaut schrieb:
Weil "iterator" eine nested class ist und kein Datenmember
Ja, das wird der Punkt sein, wenn es ein Member wäre, müsste es ja static sein, wenn ich via :: Operator drankomme und dann sollte ich ja auch über eine Instanz zugreifen können.
@Braunstein:
Schon klar, ich wollte nur verstehen, wieso das so nicht klappt ...
-
Belli schrieb:
... wenn es ein Member wäre, müsste es ja static sein, ...
Wenn es ein Member wäre, dann wäre es kein Typ und du könntest das nicht in der Deklaration verwenden.
-
Jooo ... ich glaube, ich habe wieder ein klein wenig mehr der großen C++ - Mysterien verstanden.
Danke Euch!