Wyświetlanie Listy zaczynając od iteratora/wskaznika.
Ostatnio zmodyfikowano 2013-11-20 21:51
olieb Temat założony przez niniejszego użytkownika |
Wyświetlanie Listy zaczynając od iteratora/wskaznika. » 2013-11-20 17:00:55 Mam problem z wyswietleniem listy(ciag). Zawartosc listy wyswietlam za pomoca petli: for( POS = ciag.begin(); POS != ciag.end(); POS++ )
jednak ten sposób wyswietla mi ja od poczatku do konca. Rozumiem, bo iterator jest na poczatku listy i wyswietla ja do konca. Potrzeboje wyswietlic liste kiedy iterator POS jest na innej pozycji niż ciag.begin() np: mam ciag 1 2 3 6 7 5 3 3 4 5 ^ POS chce wyswietlic liste zaczynajac od trójki. |
|
pekfos |
» 2013-11-20 17:08:59 W czym problem? |
|
olieb Temat założony przez niniejszego użytkownika |
» 2013-11-20 17:15:36 Pracuje na liscie.
Po wykonaniu kilku operacji na ciagu liczb chce go wyswietlic, zaczynajac od obecnej pozycji iteratora. |
|
pekfos |
» 2013-11-20 17:18:18 for(; POS != ciag.end(); POS++ )
|
|
olieb Temat założony przez niniejszego użytkownika |
» 2013-11-20 17:22:04 Tak mi sie wlasnie wydaje, ze to musi byc cos prostego. Jednak powyzsze rozwiazanie wogule nie wyswietla ciagu. |
|
pekfos |
» 2013-11-20 17:22:50 Pokaż kod. |
|
olieb Temat założony przez niniejszego użytkownika |
» 2013-11-20 17:25:26 #include <iostream> #include <list>
using namespace std;
int main( int argc, char ** argv ) { int a, licznik; list < unsigned int > ciag; list < unsigned int >::iterator POS, it; cin >> licznik; while( cin >> a && !cin.eof() ) { ciag.push_back( a ); it = ciag.begin(); } for( POS = ciag.begin(); POS != ciag.end(); POS++ ) while( licznik != 0 ) { licznik = licznik--; if( * POS % 2 == 0 ) { ++it; ciag.erase( it ); advance( it, * POS ); } else { ++it; ciag.insert( it, * POS - 1 ); advance( it, * POS ); } } for(; POS != ciag.end(); ++POS ) { cout << " " << * POS << endl; cout << endl; } return 0; } |
|
pekfos |
» 2013-11-20 17:30:55 No i działa jak trzeba: wyświetla od POS, do końca, z tym, że POS już jest za końcem. |
|
« 1 » 2 |