2012-03-26 3 views
4

Ich fand dies in der Norm als die Post-Bedingung für die rehash Funktion in ungeordneten assoziativen Containern:Wann findet die erneute Speicherung für ungeordnete assoziative Container statt?

Beitrag: a.bucket_count()> a.size()/a.max_load_factor() und a.bucket_count()> = n. (wobei n die Anzahl der Schaufeln in dem Behälter)

Kann ich die oben bedeuten, dass ein automatischer Aufguß wird ausgelöst, wenn eine der oben genannten Bedingungen für alle Implementierungen erfüllt ist? Oder sind Implementierungen frei, um zu entscheiden, wann ein erneutes Aufladen durchgeführt werden soll, und das obige betrifft nur die rehash-Funktion?

Antwort

7

Die Implementierung muss die load_factor() <= max_load_factor() und load_factor() == size()/bucket_count() beibehalten. So kann eine automatische Wiederanhebung während einer insert auftreten, um den Ladefaktor invariant zu halten.

Obwohl die load_factor() nicht max_load_factor() überschreiten kann, glaube ich nicht, dass es eine Garantie gibt, dass keine Umschichtung während einer Einfügung durchgeführt wird, auch wenn Sie beweisen können, dass diese Invariante nicht verletzt wird.

Definition für max_load_factor ist:

Gibt eine positive Zahl, dass die Behälter Versuche, die Last Faktor kleiner zu halten als oder gleich. Der Container erhöht automatisch die Anzahl der Buckets, um den Ladefaktor unter dieser Nummer zu halten.

Verwandte Themen