In Matrix iterieren
-
vector<vector<int> > v; for(vector<vector<int> >::iterator i1=v.begin();i1<v.end();++i1){ for(vector<int>::iterator i2=i1->begin();i2<i1->end();++i2){ i2->push_back(5); } }
so in etwa halt^^
v.begin();it<v.begin();
btw,deshalb werden deine werte nich ausgegeben^^
wenn 1<1 dann...
-
Genau.. das wars.. klar danke!
hilft das was?
Zitat:
v.begin();it<v.begin();btw,deshalb werden deine werte nich ausgegeben^^
wenn 1<1 dann...Ach, lasst mich doch beide in Ruhe!!!
-
soll ich meinen post wegediten?
-
Und wie kann ich jetzt auf den Index des aeusseren vectors
in der aeusseren der beiden Schleifen zugreifen?Also, ohne std::vector waere das einfach bei
for(int i=0;i<10;++i) meinVektor[i] // Index
Aber wie ist es bei std::vector? Wie kriege ich den aktuellen Index mit dem Iterator?
-
kannste doch ganz einfach über den [] operator zugreifen:
std::vector< std::vector<int> > matrixvec; for (unsigned i = 0; i < matrixvec.size(); ++i) for (unsigned j = 0; j < matrixvec[i].size(); ++j) cout << matrixvec[i][j] << endl;
-
Aber ich will ja nicht auf das Objekt zugreifen, sondern die Indexzahl haben und fuer spaetere Zwecke verwenden.
-
std::vector< std::vector<int> > matrixvec; int iX = -1, iY = -1; for (unsigned i = 0; i < matrixvec.size(); ++i) for (unsigned j = 0; j < matrixvec[i].size(); ++j) if (match(matrixvec[i][j])) { iX = i; iY = j; }
-
Ja, klar das geht, aber geht es auch mit Iteratoren?
-
iteratoren haben nur einen zeiger auf das naechste und den inhalt. keine angabe über "position" in der liste (please correct me...)
-
sicher,is sogar relativ einfach
int index=distance(v.begin(),iterator_of_v);