Ho due vettori di oggetto. Qualcosa di simile:sottrarre due std :: vector degli oggetti senza ordine
std::vector<thing> all_things;
std::vector<thing> bad_things;
voglio ottenere un terzo vettore che contiene le good_things. In altre parole, ogni oggetto in all_thing che non si appartiene a bad_things:
std::vector<thing> good_things=subtract(all_things,bad_things);
Tutte le idee su come implementare sottrarre in modo più efficiente e standard.
P.S i vettori possono NON essere ordinato perché la classe cosa non ha alcuna cosa da ordinare da. Grazie!
Modifica: e non voglio apportare alcuna modifica a all_things
. ad es.
void substract(const std::vector<thing>& a, const std::vector<thing>& b);
gli elementi nei tuoi vettori sono unici? –
considera l'utilizzo di 'std :: set' –
@PaoloM [' std :: set'] (http://en.cppreference.com/w/cpp/container/set) richiede un ordinamento (che gli stati OP non sono possibili), dovrebbe quindi usare un ['std :: unordered_set'] (http://en.cppreference.com/w/cpp/container/unordered_set) se gli elementi sono univoci –