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_addresssind die Adressen zum Entfernen gespeichert (funktioniert fehlerfrei).
in
std::vector<HitItem> m_vHitsalle 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() );