Est-il possible de trouver la valeur de hachage (hachage) pour un élément dans un unordered_set
?Obtient la valeur de hachage unordered_set et est-elle constante?
Par exemple;
unordered_set<string> errorStates;
errorStates.insert("File does not exist");
// Can I get the hash of this key?
int ERR_FILE_NOT_EXISTS = errorStates.keyHash("File does not exist");
serait également le hachage pour File does not exist
toujours le même? Est-ce que le hachage serait le même si je cours mon programme et insère 20 valeurs dans errorStates
et quand j'exécute le programme et insère 200? L'idée est que le hash sera l'identifiant d'erreur unique et écrira le hash dans un fichier.
Je crée une classe Status
pour renvoyer facilement les résultats d'erreur/succès des fonctions et obtenir un message d'erreur d'un code d'erreur - voir ci-dessous pour sa mise en œuvre partielle. Mais peut-être existe-t-il un meilleur moyen plus approprié?
//usage
Status evtState = onMouseMove();
Status copyState = fileCopy();
class Status
{
public:
static STATE registerState(const tstring &stateMsg)
{
states.emplace(stateMsg);
return states.hashValue(stateMsg);
}
Status(const STATE &state) : state(state) {}
~Status() {}
string toString()
{
unordered_set<tstring>::const_iterator ele = states.find(state);
return (ele != states.end()) ? *ele : "Undefined";
}
ostream& operator<<(Status& obj)
{
return cout << obj.toString();
}
private:
static unordered_set<tstring> states;
const STATE state;
};
'Est-il possible de trouver la valeur de hachage (clé hachée) pour un élément dans un ensemble non défini? Bien sûr: 'my_set.hash_function() (élément)'. –
@IgorTandetnik Merci cela répond une partie. Le hachage serait-il toujours constant? Indépendamment de la taille de l'ensemble, OS 32 bits ou 64 bits? –
'Aussi le hachage serait toujours le même?' C'est mieux. Comment l'ensemble pourrait-il trouver n'importe quel élément, si son hachage ne cesse de changer? Ce ne serait pas beaucoup d'une fonction de hachage, plus un générateur de nombres aléatoires. –