Iteratoren-Arithmetik



  • Doppelte Schleife bei der die zweite immer eins weiter anfängt als die erste:
    Ziel: schöne Lösung ...

    Idee:

    set<vector<bool> >::iterator iterU;
    set<vector<bool> >::iterator iterV;
    for(iterU = s->begin();iterU!=s->end();iterU++){
     for(iterV = iterU +1 ;iterV!=s->end();iterV++){
         //vektoren vergleichen
      }
    }
    

    ich habs dann so gemacht (doof) und bin hauptsächlich neugierig,
    warum die Version oben (weniger doof) nicht funktioniert.

    Lsg:

    set<vector<bool> >::iterator iterU;
    set<vector<bool> >::iterator iterV;
    for(iterU = s->begin();iterU!=s->end();iterU++){
     iterV = iterU; iterV++;  :xmas2: 
     for(;iterV!=s->end();iterV++){
         //vektoren vergleichen
      }
    }
    


  • Versuch mal

    iterV = ++iterU;
    


  • Wobei afaik das andere auch gehen müsste?



  • es müsste aber iterU++ heißen, da sonst iterV = iterU ist und das ++ nicht berücksichtigt wird... in den fag steht ein bericht dazu...


Anmelden zum Antworten