Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++, STL] Usuwanie elementu z std::list

Ostatnio zmodyfikowano 2013-05-14 01:01
Autor Wiadomość
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??

C/C++
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?
P-82900
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ść.
P-82901
« 1 »
  Strona 1 z 1