Ich habe eine Sammlung von Objekt des Typs "T", die ich durchlaufen möchte. Ein Objekt vom Typ „T“ hat zwei wichtige Eigenschaften:Benutzerdefinierte Iterator-Funktion für C++
int r; // row number
int c; // column number
Ich möchte einen Iterator definieren, die mich durch alle Elemente der Kollektion iterieren ermöglicht.
Dies kann mit Hilfe getan werden:
std::vector<T> v;
for(std::vector<T>::iterator it = v.begin(); it != v.end(); ++it) {
....
}
Allerdings habe ich den Iterator möchte eine weitere Eigenschaft haben. Ich möchte in der Lage sein
it.nextrow()
Aufruf dieser Funktion aufrufen, sollte das Element „e“ von v zurück, wo er + 1 = ec.r und ec = ec.c, wo ec das aktuelle Element ist darauf durch der Iterator. I.e. Das Aufrufen von it.nextrow() sollte mir einen Zeiger auf das Element geben, wo die Spalte gleich ist, aber die Zeile um eins erhöht wird. Ich hoffe es macht Sinn.
Ich bin nicht sicher, was ich tun muss, damit dies funktioniert, da ich ziemlich neu in fortgeschrittenen C++ - Konzepten bin. Kann mir jemand helfen?
Können Sie genauer erklären, wie Ihre Daten strukturiert sind? Ich sehe nicht die Beziehung zwischen 'std :: vector' und 'int r, c'.Verfügen Sie über einen Vektor von Zeilenobjekten, in denen jede Zeile eine Auflistung von Spaltenwerten enthält, oder haben Sie ein flaches Layout, in dem alle Spalten einer Zeile im Vektor aufeinander folgen? –
grek40