generische Hash -Funktion für Tupel in nicht ordnungsgemäßen Sammlungen
Die std :: unbestrahlte_Map und std :: unconded_set Container bieten effiziente Aussehen und Ein- und Ein- und Ein- und Ein- und Einfügen, die auf ihren hashierten Werten basieren. Die Verwendung von Tupeln als Schlüssel in diesen Sammlungen ohne die Definition einer benutzerdefinierten Hash -Funktion kann jedoch zu unerwartetem Verhalten führen.
Um dies zu korrigieren
Struktur std :: Hash
template struct std::hash<:tuple int>> { size_t operator()(std::tupleconst& tuple) const { ... } };
#include
#includenamespace std { namespace { // Code derived from Boost template inline void hash_combine(std::size_t& seed, T const& v) { ... } // Recursive template code from Matthieu M. template ::value - 1> struct HashValueImpl { ... }; } template struct hash<:tuple>> { size_t operator()(std::tuple const& tuple) const { ... } }; }
namespace my_hash {
// Nicht-Tupel-Typen an den Std :: Hash weiterleiten
Vorlage
Bei Verwendung dieser Lösung muss die nicht ordnungsgemäße Sammlung die benutzerdefinierte Hash -Implementierung wie folgt ausdrücklich verweisen: unconded_set ,
std :: hash
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3