Sto cercando un modo per rimuovere i duplicati da un vettore (chiamiamolo theGreatVector: D). Non riesco a usare std :: sort seguito da std :: unique perché non c'è modo di ordinare i miei oggetti.Rimozione di duplicati da un vettore non ordinabile
theGreatVector contiene alcuni vector<Item*>
(smallVectors)
ho avuto un sovraccarico di == per vector<Item*>
così posso usarlo
sono in grado di creare qualcosa in O (n²), ma ho bisogno di tempo l'efficienza (theGreatVector.size() potrebbe essere 10⁵ o 10⁶)
in questo momento quello che ho ottenuto è qualcosa di simile (riempio il mio vettore solo se smallOne isnt in esso):
for(i=0;i<size;i++)
{
vector<Item*>smallOne = FindFacets(i)
if(smallOne doesnt belong to GreatOne) // this line already in O(n) :/
{
theGreatOne.push_back(smallOne);
}
}
Se c'è un modo per farlo anche in nlog (n) + n o qualcosa di inferiore a n², sarebbe fantastico!
Grazie mille
AZH
Se si dispone di uguaglianza di valori, è probabile che sia possibile definire anche alcuni ordini ed eseguire un ordinamento. – juanchopanza
cosa vuoi dire che non puoi ordinare i tuoi oggetti? puoi sempre 'std :: legare' ogni membro di dati in una' std :: tuple' e usare l'ordinamento lessicografico su quello – TemplateRex
Cosa fa il ''=' 'su' vector- '? Confronta 'size' e valori-puntatore o dereferenzia i puntatori e confronta il valore sottostante? Perché pensi che '<' non può funzionare allo stesso modo, 'Item' è strano in qualche modo? Con "duplicati" intendi il duplicato 'vector
- ', o duplicato 'Elemento *' in uno dei 'vector
- ', o duplicato 'Elemento' in un' Articolo * 'in uno dei' vector
- '(presumo il primo)? L'ordine di 'GreatOne' è importante? Quanto spesso ci aggiungi? Leggere? Modificare? In quale modello (un sacco di aggiunte, quindi nient'altro che molte letture?) –
Yakk