【发布时间】:2012-11-15 00:13:33
【问题描述】:
我只想使用 unordered_map 和我的结构作为键,因为我不需要任何排序..但我就是找不到自己拥有所有这些散列的东西..
作为一个相关问题..当人们比较无序和有序映射时,他们从不谈论哈希函数,那怎么可能?一个糟糕的哈希函数不能让无序映射比映射慢吗? (完全归功于哈希函数)
struct exemple{
unsigned char a,b,c;
unsigned int n;
bool operator == ( const exemple & other) const {..}
};
namespace std {
template <>
struct hash<exemple> : public std::unary_function<const exemple &, std::size_t>
{
inline std::size_t operator()(const exemple & exemple_p ) const
{
return 0;// what do I do
}
};
}
-编辑- a,b,c 只能有值 'a', 'b', 'c' 或 'd', n 在 3 到 60 之间变化。
【问题讨论】:
-
哈希函数需要自己写吗?
-
这是两个截然不同的问题。请一次发布其中一个。
-
@evanmcdonnal 你是什么意思?如果我不提供无序地图,则无法编译。
-
是的,但是您可以使用已经存在的哈希库中的逻辑。例如,假设我有一些字符串散列函数
hash(string),我可以创建一个函数,将int转换为字符串,然后将其与三个chars连接,然后以return hash(StringIjustMade);结束函数,这与实际上自己编写低级哈希逻辑。 -
首先删除
unary_function。这些东西在官方上是没用的,因为就像永远一样。
标签: c++ unordered-map hash-function