Invertire gli elementi in una lista

di il
2 risposte

Invertire gli elementi in una lista

Salve vorrei che qualcuno mi aiutasse a risolvere questo problemino
in C++ sto utilizzando le liste e vorrei una volta stampati tutti gli elementi
ristamparli nell'ordine invertito
ecco qui il programma che non funziona
ho utilizzato lo stesso programma che mi stampa il massimo in una lista
non riesco solamente a far stampare l'ordine inverso

#include <string>
#include <list>
#include <iostream>
using namespace std;

void maximum(list<string>& staff)
{
    string max="";
    list<string>::iterator pos;
    for(pos=staff.begin();pos!=staff.end();pos++)
    {
        if(*(pos)>max)
        max=*(pos);
    }
cout<<max<<endl;
for(pos=staff.begin();pos!=staff.end();pos++)
{
    cout<<*(pos)<<endl;
}
for(pos=(staff.end()).previous();!pos.is_null();pos=pos.previous())
{
    cout<<*(pos)<<endl;
}
}
int main()
{
list<string> staff;
staff.push_back("Harry");
staff.push_back("Vivian");
staff.push_back("Zack");
staff.push_back("Sam");
staff.push_back("Dick");
cout << "The maximum element in the list is " ;
maximum(staff);
return 0;
}

non devo utilizzare funzioni della libreria ma devo implementarla io(lo dico perchè so che ci sono funzioni c++ già implementate che potrei usare)

2 Risposte

  • Re: Invertire gli elementi in una lista

    Usa reverse_iterator invece di iterator. rbegin a posto di begin e rend a posto di end. Tutto il resto rimane uguale.
    
    std::list<std::string>::reverse_iterator it;
    for(it = staff.rbegin();it != staff.rend(); ++it)
    {
        cout<<*(it)<<endl;
    }
    
    esempio sull'uso (praticamente lo stesso esempio fatto da me sopra)
    http://www.cplusplus.com/reference/stl/list/rbegin

    Oppure se proprio vuoi complicarti la vita:
    
    std::list<std::string>::iterator it;
    for(it = staff.end();it != staff.begin();)
    {
    	cout<<*(--it)<<endl;
    }
    
  • Re: Invertire gli elementi in una lista

    
    pos.is_null(); //da dove arriva
    pos.previous(); // idem con patate
    
    da dove arrivano queste funzioni? La classe iterator non li ha.
Devi accedere o registrarti per scrivere nel forum
2 risposte