Iterator
-
Hallo,
ich möchte nicht auf den Wert des Iterators zugreifen, sondern auf die Position.
Bsp. Es ist der 4. Durchlauf und der Iterator it hat den Wert5. Mit *it erhalte ich den Wert 5. Wie komme ich an die Anzahl der Durchläufe hier 4?Schaut bitte sourecode s.u., hier habe ich Zählvariable i um zu wissen in welchem Durchlauf die innere Schleife ist. Aber das muss doch auch über den Iterator gehn oder nicht?
[cpp]vector <double> XKoord;
vector< vector<double> > X;
vector< vector<double> >::iterator row_it = Segmente.begin();
vector< vector<double> >::iterator row_end = Segmente.end();vector<double>::iterator col_it;
vector<double>::iterator col_end;
int isLeft = 0;
double myarray[3];
int i = 0;
for ( ; row_it != row_end; ++row_it)
{
col_it = row_it->begin();
col_end = row_it->end();
i = 0;for ( ; col_it != col_end; ++col_it)
{*myarray [i] = col_it; i++;
isLeft = 0;
if((i % 4) != 0 )
{
myarray [2] = isLeft;
X.insert (X.row_it, myarray, myarray+3);
//array leeren}
else if((i % 2) != 0 )
{
isLeft = 1;
myarray [2] = isLeft;
X.insert (X.row_it, myarray, myarray+3);}
//array leeren}
}[/cpp]vieln DAnk..
-
Nochmal:
vector <double> XKoord; vector< vector<double> > X; vector< vector<double> >::iterator row_it = Segmente.begin(); vector< vector<double> >::iterator row_end = Segmente.end(); vector<double>::iterator col_it; vector<double>::iterator col_end; int isLeft = 0; double myarray[3]; int i = 0; for ( ; row_it != row_end; ++row_it) { col_it = row_it->begin(); col_end = row_it->end(); i = 0; for ( ; col_it != col_end; ++col_it) { myarray [i] = *col_it; i++; isLeft = 0; if((i % 4) != 0 ) { myarray [2] = isLeft; X.insert (X.row_it, myarray, myarray+3); //array leeren } else if((i % 2) != 0 ) { isLeft = 1; myarray [2] = isLeft; X.insert (X.row_it, myarray, myarray+3); } //array leeren } }
-
-
Edit³: Hab den Beitrag nicht richtig gelesen.
-
Schaut bitte sourecode s.u.,
Erst wenn er vernünftig formatiert ist. Fettdruck und cpp-Tags vertragen sich leider nicht gut.
Antwort auf den lesbaren Teil der Frage: std::distance zu begin() oder (bei random-access Iteratoren) auch ein einfaches Minus.
-
Danke