c++ - inside - search in std vector




controlla se uno std:: vector contiene un certo oggetto? (2)

Possibile duplicato:
Come trovare un oggetto in un vettore std ::?

C'è qualcosa in <algorithm> che ti permette di controllare se un std :: container contiene qualcosa? Oppure, un modo per crearne uno, ad esempio:

if(a.x == b.x && a.y == b.y)
return true;

return false;

Questo può essere fatto solo con std::map dato che usa le chiavi?

Grazie


Se la ricerca di un elemento è importante, raccomanderei std::set invece di std::vector . Usando questo:

std::find(vec.begin(), vec.end(), x) gira in tempo O (n), ma std::set ha il suo membro find() (es. myset.find(x) ) che gira in tempo O (log n): è molto più efficiente con un gran numero di elementi

std::set garantisce anche che tutti gli elementi aggiunti siano unici, il che ti evita di dover fare qualcosa come if not contained then push_back()...


Vedi domanda: come trovare un oggetto in un vettore std ::?

Dovrai anche assicurarti di aver implementato un operator==() adatto operator==() per il tuo oggetto, se quello predefinito non è sufficiente per un test di uguaglianza "approfondito".







vector