【发布时间】:2013-11-18 03:09:48
【问题描述】:
一个人应该能够使用集合的集合似乎很直观,实际上std::set 被设计为默认支持这种使用(因为默认实现了字典顺序。)同样,期待相同的功能似乎是合理的的boost::unordered_set。默认情况下 boost 没有为boost::unordered_set 实现通用哈希函数是否有充分的理由,例如:
// DEFINE A HASH FUNCTION FOR A HASH-SET THAT COMBINES THE HASH VALUES
// OF THE ELEMENTS OF THAT SET
namespace boost {
template<typename T>
size_t hash_value(const boost::unordered_set<T> & set) {
typename boost::unordered_set<T>::const_iterator it, itend;
size_t seed = 0;
for ( it = set.begin(), itend = set.end(); it != itend; it++ ){
boost::hash_combine(seed,boost::hash_value(*it));
}
return seed;
}
}
【问题讨论】: