Spesso, è più efficiente utilizzare un numero ordinato std::vector
anziché uno std::set
. Qualcuno conosce una classe di libreria sorted_vector
, che in pratica ha un'interfaccia simile a std::set
, ma inserisce elementi nel vettore ordinato (in modo che non vi siano duplicati), utilizza la ricerca binaria sugli elementi find
, ecc.?Esiste una classe sorted_vector, che supporta insert(), ecc.?
So che non è difficile scrivere, ma probabilmente meglio non perdere tempo e utilizzare comunque un'implementazione esistente.
Update: La ragione per usare un vettore ordinato invece di un insieme è: Se si dispone di centinaia di migliaia di piccoli gruppi che contengono solo 10 o giù di lì membri ciascuno, è più memoria-efficiente di utilizzare solo i vettori ordinati anziché.
Potresti essere più specifico su cosa in std :: set non è abbastanza efficiente? – KillianDS
Se si dispone di centinaia di migliaia di piccoli set contenenti solo 10 membri ciascuno, è più efficiente in termini di memoria utilizzare solo vettori ordinati. – Frank
Non penso ci sia una classe già pronta per questo.Puoi scrivere il tuo o usare 'lower_bound()' per l'inserimento e 'binary_search()' per la ricerca. – doublep