std::list zickt rum



  • Hi,
    als ich heute ein Beispiel aus meinem C++ Buch ausprobieren wollte, bekam ich an dieser Stelle immer die unten genannten Fehlermeldungen.

    for (std::list<strct>::iterator it = m_List.begin(); it != m_List.end(); it++)
    {
    	if(it->i == 4)
    		m_List.remove(it);
    }
    
    struct strctConnection
    {
    	int i;
    	std::string bla;
    };
    

    bekomme ich immer diese Fehlermeldungen:

    auth-server.cpp:146: error: no matching function for call to `
       std::list<strctConnection, std::allocator<strctConnection> >::remove(
       std::_List_iterator<strctConnection, strctConnection&, strctConnection*>&)'
    /usr/lib/gcc-lib/i686-pc-linux-gnu/3.3.2/include/g++-v3/bits/list.tcc:182: error: candidates
       are: void std::list<_Tp, _Alloc>::remove(const _Tp&) [with _Tp =
       strctConnection, _Alloc = std::allocator<strctConnection>]
    

    Wie kann das angehen ? Ist doch kein Fehler enthalten oder ?

    Bye



  • du hast remove und erase verwechselt. Das eine ist für Iteratoren, das andere für Objekte

    http://www.sgi.com/tech/stl/List.html



  • Dieser Thread wurde von Moderator/in kingruedi aus dem Forum Linux/Unix in das Forum C++ verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Achtung: Wenn man ein Element einer Liste loescht, werden die Iteratoren ungueltig. erase liefert aber einen neuen Iterator zurueck -> Doku.



  • Achtung: Wenn man ein Element einer Liste loescht, werden die Iteratoren ungueltig. erase liefert aber einen neuen Iterator zurueck -> Doku.

    Bei einer Liste ist es nur der Iterator der auf das glöschte Objekt verwies, nicht alle Iteratoren. Das ja einer der grossen Vorteil einer Liste.


Anmelden zum Antworten