[C++, STL] Usuwanie elementu z std::list
Ostatnio zmodyfikowano 2013-05-14 01:01
tp1234 Temat założony przez niniejszego użytkownika |
[C++, STL] Usuwanie elementu z std::list » 2013-05-14 00:23:29 Witam to znowu ja. Nowy program nowy problem :D ale są postępy. A więc piszę sobie funkcję która ma sortować krótką listę. Problem jest taki że lista zawiera obiekty. i ma być sortowana według składnika obiektu który jest nr. ID. Wymyśliłem to tak że pętla szuka największego ID w liście i przerzuca ten obiekt do drugiej listy a z tej przeszukiwanej go usuwa. Wszystko było by ok gdyby nie to że element przerzucony nie zostaje usunięty. Moje pytanie dlaczego tak jest. I może znacie jakiś łatwiejszy sposób żeby to wykona?? void ListaUzytkownika::sortuj_ID() { DaneUzytkownika szukany; list < DaneUzytkownika >::iterator iter; list < DaneUzytkownika >::iterator najwiekszy; while( lista.empty() != true ) { for( iter = lista.begin(); iter != lista.end(); ++iter ) { if( szukany.Id < iter->Id ) { szukany =* iter; najwiekszy = iter; } } cout << szukany; posortowana.push_front( szukany ); lista.erase( najwiekszy ); cout << lista.size() << endl; }
Pomożecie? |
|
DejaVu |
» 2013-05-14 01:01:59 Ja bym użył std::priority_queue. Niemniej jednak jeżeli chcesz usunąć element z listy to musisz podać do metody erase iterator do elementu, a nie jego wartość. |
|
« 1 » |