ALL,Esiste un contenitore ordinato in STL
Esiste un contenitore ordinato in AWL? Quello che voglio dire è il seguente:
Ho un std :: vector dove Foo è una classe personalizzata. Ho anche un comparatore di qualche tipo che confronterà i campi della classe Foo.
Ora, da qualche parte nel mio codice che sto facendo:
std::sort(myvec.begin(), myvec.end(), comparator);
che ordinare il vettore secondo le regole io definisco nel comparatore.
Ora voglio inserire un elemento di classe Foo in quel vettore. Se potessi vorrei scrivere solo:
mysortedvector.push_back(Foo());
e ciò che sarebbe accaduto è che il vettore metterà questo nuovo elemento in base al confronto al suo posto.
Invece, in questo momento devo scrivere:
myvec.push_back(Foo());
std::sort(myvec.begin(), myvec.end(), comparator);
che è solo uno spreco di tempo, dal momento che il vettore è già ordinato e tutto quello che serve è quello di posizionare il nuovo elemento in modo appropriato.
Ora, a causa della natura del mio programma, non posso usare std :: map <> poiché non ho coppie chiave/valore, solo un vettore semplice.
Se si utilizza stl :: list, è necessario chiamare di nuovo ordinamento dopo ogni inserimento.
Grazie per tutti i suggerimenti che è possibile fornire.
Che dire 'std :: set'? – us2012
Se sapessi dove andare potresti usare insert() – james82345
@ us2012, ho guardato std :: set.Il problema è che questi oggetti saranno presentati in una griglia, dove l'utente può ordinarli in base a tutti i membri della classe e modificarli in qualsiasi modo essi ritengano opportuno. Come membri std :: set sono const per definizione, questo contenitore non fa per me. – Igor