Ich habe eine Datenstruktur mit 15 unsigned sehnen, ich habe eine Hash-Funktion mit hash_combine wie folgt definiert:Wie zähle ich Schlüsselkollisionen bei der Verwendung von boost :: unordered_map?
friend std::size_t hash_value(const TUPLE15& given)
{
std::size_t seed = 0;
boost::hash_combine(seed, val1);
boost::hash_combine(seed, val2);
...
return seed;
}
ich legen Sie eine große Anzahl von Werten in einem boost :: unordered_map aber die Leistung ist nicht gut genug . Wahrscheinlich könnte ich es mit einer alternativen Hashing-Funktion besser machen. Um dies zu bestätigen, muss ich überprüfen, wie viele Kollisionen ich erhalte. Wie mache ich das?
Ihr zweites Beispiel zählt die Anzahl der Schaufeln enthält, Kollisionen in Bezug auf die tatsächliche Anzahl der Kollisionen im Gegensatz ... ändern Sie ihn auf 'Kollisionen + = tuples.bucket_size (Eimer) -1 ; '? – gospes
@gospes: Du hast Recht, ich habe es jetzt behoben. Vielen Dank. –