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.


  • Mod

    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


Log in to reply