我正在通過C++ std::unordered_set<char>
實現散列函數。我最初嘗試使用boost :: hash_range:C++上的散列函數很好unordered_set
namespace std
{
template<> struct hash<unordered_set<char> >
size_t operator(const unordered_set<char> &s)(
{
return boost::hash_range(begin(s), end(s))
};
}
但後來我意識到,由於集是無序的,迭代順序並不穩定,而散列函數是這樣錯誤的。對我來說有什麼更好的選擇?我想我可以std::set
而不是std::unordered_set
,但使用有序集,只是因爲它更容易哈希似乎...錯了。
你可以散列無序集合中元素的個數。請注意,比較你的無序集合時解決哈希[將是非常昂貴的](http://stackoverflow.com/q/10118551/1553090) – paddy
我想進一步使用std :: set的情況。謝謝。 –
似乎唯一的另一種方法是創建一個臨時副本並對其進行排序。如果散列unordered_set是一個偶然的操作,這可能是更合理的,我猜... –