2016-04-18 5 views

Antwort

3

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())); 
    } 
+0

Was ist der Unterschied zwischen Wiederverwendung und Reserve? –

+0

'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

1

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())).