std::remove



  • Wieso klappt das manchmal und manchmal wird einfach nur ein Teil (vom Anfang der struct im vector entfernt)?

    in

    std::vector<HitItem> v_remove_address
    

    sind die Adressen zum Entfernen gespeichert (funktioniert fehlerfrei).

    in

    std::vector<HitItem> m_vHits
    

    alle Adressen.

    struct HitItem
    {
    	CString address;
    	CString id;
    	CString url;
    
    	bool operator == ( const HitItem& rhs ) const
    	{
    		return( address == rhs.address && id == rhs.id );
    	}
    };
    
    for( std::vector<HitItem>::iterator ri = v_remove_address.begin(); ri != v_remove_address.end(); ++ri )
    	m_vHits.resize( std::remove( m_vHits.begin(), m_vHits.end(), *ri ) - m_vHits.begin() );
    


  • Versuch's mal so:

    for( std::vector<HitItem>::iterator ri = v_remove_address.begin(); ri != v_remove_address.end(); ++ri )
        m_vHits.erase( std::remove( m_vHits.begin(), m_vHits.end(), *ri ) , m_vHits.end() );
    

Anmelden zum Antworten