Was ist äquivalent von hash_map::resize(n)
in C++ 11's unordered_map
? Frühere Größenanpassung von hash_map zur Unterstützung: void resize(size_type n)
erhöht die Bucket-Anzahl auf mindestens n.Entsprechung von hash_map :: resize() in C++ 11's ungeordnete_map
Antwort
Die äquivalent ist rehash:
Sets the number of buckets in the container to n or more.
Rehash Anzahl von Buckets angeben, während Reserve wie in docs:
die Anzahl der Schaufeln in dem Behälter (bucket_count) Sets am geeignetsten mindestens n Elemente ..
In SGI-Dokumentation für hash_map::resize I haben R ead, dass es die Anzahl der Buckets ändert, so dass IMO rehash ist angemessen. Aber hash_map ist kein Standard, daher implementieren verschiedene Implementierungen es möglicherweise anders.
Eine andere Sache ist, dass Reserve tatsächlich Aufguss realisiert wird, in gcc 5.3 sieht es wie folgt aus:
void
reserve(std::size_t __n)
{
__hashtable* __this = static_cast<__hashtable*>(this);
__this->rehash(__builtin_ceil(__n/max_load_factor()));
}
Was ist der Unterschied zwischen Wiederverwendung und Reserve? –
'rehash' gibt die Anzahl der Buckets an, während die Reserve wie in der Dokumentation lautet:' Legt die Anzahl der Buckets im Container (bucket_count) auf die am besten geeignete Anzahl fest, um mindestens n Elemente zu enthalten.' In SGI-Dokumenten für hash_map :: resize habe ich gelesen, dass es die Anzahl der Buckets ändert, so dass IMO rehash geeignet ist. – marcinj
Verwenden rehash
die Anzahl der Schaufeln zu ändern.
Verwenden Sie reserve
, um die Anzahl der Buckets in Relation zum Ladefaktor der Hash-Tabelle zu berücksichtigen. Von der docs of reserve:
Ruft effektiv
rehash(std::ceil(count/max_load_factor()))
.
'reserve' vielleicht? –