Iterare una lista non fino alla fine

di il
4 risposte

Iterare una lista non fino alla fine

Salve, vorrei un consiglio. Forse la mia domanda è un po' banale, dovrei iterare una lista ma escludendo dall'iterazione gli ultimi elementi (per esempio gli ultimi 5), come posso fare?
Attualmente il mio iteratore cicla fino alla fine:
for (list<segmentTrail>::const_iterator iterator = trail.begin(), end = trail.end(); iterator != end; ++iterator) 
grazie

4 Risposte

  • Re: Iterare una lista non fino alla fine

    Usa std::advance()
    http://www.cplusplus.com/reference/std/iterator/advance/
  • Re: Iterare una lista non fino alla fine

    Ma come posso inserirlo direttamente nel "for loop" se volessi cominciare a iterare dal quinto elemento della lista fino alla fine?
  • Re: Iterare una lista non fino alla fine

    
    // se il compilatore è c++11
    auto it = trail.cbegin();
    auto stop = trail.cend();
    std::advance(it,5);
    for (; iterator != stop ; ++iterator)
    ...etc...
    
    // compilatore c++03
    list<segmentTrail>::const_iterator iterator = trail.begin();
    list<segmentTrail>::const_iterator stop = trail.end();
    std::advance(it,5);
    for (; iterator != stop; ++iterator)
    ...etc...
    
    Ho cambiato il nome della variabile perché non mi piace che il nome coincida con quello della funzione, ma il concetto è uguale.

    Nota personale.
    Da questo piccolo esempio è lampante quanto convenga usare compilatori che implementino qualcosa del C++11 (ultime versioni del g++ o VC++ 2010 per citare i più diffusi.)
  • Re: Iterare una lista non fino alla fine

    Grazie mille!
Devi accedere o registrarti per scrivere nel forum
4 risposte