是否有可能找出unordered_set
中元素的散列值(散列鍵)?獲取無序散列值並且是恆定的
例如;
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");
此外,散列File does not exist
總是相同嗎?如果我運行我的程序並將20個值插入到errorStates
中,並且運行程序並插入200時,哈希值是否相同?這個想法是散列將是唯一的錯誤ID並將散列寫入文件。
我正在創建Status
類,以輕鬆地從函數返回錯誤/成功結果,並從錯誤代碼中獲取錯誤消息 - 請參閱下面的部分實現。但也許有更好的更合適的方式?
//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;
};
'有可能找出一個unordered_set'中的元素的散列值(哈希鍵)嗎?當然:'my_set.hash_function()(element)'。 –
@IgorTandetnik謝謝你的答案的一部分。散列總是恆定的?無論設置的大小,OS 32位還是64位? –
'散列總是一樣嗎?'它更好。如果集合的哈希值不斷變化,集合如何能夠找到任何元素?它不是一個散列函數,更像一個隨機數生成器。 –