Ci sono un sacco di answers con std::vector
, ma che dire di std::unordered_set
?Does clear() influenza il conteggio bucket di std :: unordered_set?
La mia vera domanda (strettamente correlata) è questa; è efficiente riutilizzare lo stesso set non ordinato svuotandolo prima di ogni utilizzo, se riservo in anticipo quello che so essere di dimensioni ragionevoli?
Direi che sarebbe un'implementazione specifica. Lo standard specifica solo che 'clear()' cancella tutti gli elementi nel contenitore. –
Penso che [lo stesso argomento vale per 'std :: vector :: reserve'] (http://stackoverflow.com/a/18467916):' bucket_count' fa parte dello stato osservabile; è permesso di essere modificato al momento dell'inserimento, ma non è permesso esplicitamente di cambiare su 'rehash' o' reserve' (o anche su 'cancella' per quanto posso vedere ..). – dyp
@dyp: mi hai perso ... "' bucket_count' ... non è permesso esplicitamente di cambiare in 'rehash' o' reserve' "- quest'ultimo esiste per consentire il numero di bucket (quindi' bucket_count() ') da modificare: il primo accetta direttamente un nuovo numero di bucket (ma è soggetto a un controllo di integrità 'size()/max_load_factor()' e quest'ultimo lo deriva da un numero di elementi anticipati e dal valore corrente di 'max_load_factor'. "esplicito" o non è quello che fanno. –