002
18.10.2006, 21:35 Uhr
~beginner2
Gast
|
also ich habe einen vektor z.B mit 1000 elementen die alle mit 0.0 gefüllt sind und an einer stelle ist die 1.0. jetzt erstelle ich mir in einer subroutine eine maske und anhand dieser maske lösche ich aus dem einheitsvektor NUR Nuller. d.h der index der 1.0 verschiebt sich. jetzt bräuchte ich aber im nachhinein doch den index wieder. meine erase funktion ist hier als erstes und darunter das struct dass mir den erase mit der maske vollzieht... ich bin am überlegen ob ich da irgendwas reinpfrimeln kann - aber eher ungern
C++: |
vector.erase( std::remove_if( vector.begin(), vector.end(), IS_MASKED( vector, mask ) ), vector.end() );
struct IS_MASKED { std::vector< bool > mask_; const std::vector< double >* erase_el_; IS_MASKED(const std::vector< double >& erase_el, const std::vector< bool >& mask) : erase_el_( &erase_el ), mask_( mask ) { } bool operator()(const double& f) const { return mask_[ ( &f - &*erase_el_->begin() ) % mask_.size() ]; } };
|
|