Ich erstelle eine std::unordered_map
, die ich sofort mit n Schlüssel-Wert-Paaren füllen werde - und ich kenne n. Danach werden keine weiteren Elemente hinzugefügt - ich werde nur Nachschlagevorgänge durchführen.Welchen bucket_count Wert sollte ich verwenden, wenn ich die beabsichtigte Anzahl von Map Keys kenne?
Was sollte ich daher als bucket_count
an den Konstruktor übergeben?
Hinweise:
- Ich weiß, dass es nicht sehr kritisch ist und ich kann einfach nichts angeben und es wird funktionieren.
- Dies bezieht sich auf, aber kein Narr, What should I pass to unordered_map's bucket count argument if I just want to specify a hash function?)
- Wenn Ihre Antwort hilft, kann annehmen, dass Sie ich im Voraus einen Lastfaktor zwischen f_1 und f_2 (bekannt haben wollen).
- Ich verwende die Standard-Hash-Funktion, und ich weiß nicht, was die Eingabe ist wie, aber es ist unwahrscheinlich, dass das Hashing kontradiktorischer sein ..
Es hängt sehr viel davon ab, was Sie mit dieser Karte danach machen werden. Werden Sie weitere Elemente hinzufügen oder einfach nur lesen? Suchst du Geschwindigkeit oder Raumeffizienz? Wieviele Kollisionen haben Sie als Hash-Funktion auf Ihrem Gerät? Es ist vernünftig, über den Belastungsfaktor und nicht über die tatsächliche Anzahl der Eimer nachzudenken. –
@ Jean-BernardJansen: Siehe bearbeiten. Außerdem hätte ich gerne einen vernünftigen Standard - genauso wie wir jetzt einen vernünftigen Standard haben, ohne n zu kennen. Das Hinzufügen dieser Informationen und die Anwendung der gleichen Überlegungen sollte eine gewisse Anzahl ergeben ... – einpoklum