hash_map的hash函数
来源:互联网 发布:仿生学 知乎 编辑:程序博客网 时间:2024/06/06 13:07
struct hash<char*>
struct hash<const char*>
struct hash<char>
struct hash<unsigned char>
struct hash<signed char>
struct hash<short>
struct hash<unsigned short>
struct hash<int>
struct hash<unsigned int>
struct hash<long>
struct hash<unsigned long> 也就是说,如果你的key使用的是以上类型中的一种,你都可以使用缺省的hash函数。当然你自己也可以定义自己的hash函数。对于自定义变量,你只能如此,例如对于string,就必须自定义hash函数。例如:
struct str_hash{
size_t operator()(const string& str) const
{
unsigned long __h = 0;
for (size_t i = 0 ; i < str.size() ; i ++)
__h = 5*__h + str[i];
return size_t(__h);
}
};
//如果你希望利用系统定义的字符串hash函数,你可以这样写:
struct str_hash{
size_t operator()(const string& str) const
{
return return __stl_hash_string(str.c_str());
}
};在声明自己的哈希函数时要注意以下几点:
使用struct,然后重载operator().
返回是size_t
参数是你要hash的key的类型。
函数是const类型的。
如果这些比较难记,最简单的方法就是照猫画虎,找一个函数改改就是了。
struct hash<const char*>
struct hash<char>
struct hash<unsigned char>
struct hash<signed char>
struct hash<short>
struct hash<unsigned short>
struct hash<int>
struct hash<unsigned int>
struct hash<long>
struct hash<unsigned long> 也就是说,如果你的key使用的是以上类型中的一种,你都可以使用缺省的hash函数。当然你自己也可以定义自己的hash函数。对于自定义变量,你只能如此,例如对于string,就必须自定义hash函数。例如:
struct str_hash{
size_t operator()(const string& str) const
{
unsigned long __h = 0;
for (size_t i = 0 ; i < str.size() ; i ++)
__h = 5*__h + str[i];
return size_t(__h);
}
};
//如果你希望利用系统定义的字符串hash函数,你可以这样写:
struct str_hash{
size_t operator()(const string& str) const
{
return return __stl_hash_string(str.c_str());
}
};在声明自己的哈希函数时要注意以下几点:
使用struct,然后重载operator().
返回是size_t
参数是你要hash的key的类型。
函数是const类型的。
如果这些比较难记,最简单的方法就是照猫画虎,找一个函数改改就是了。
- hash_map的hash函数
- hash_map 自实现hash函数容器错误
- 自定义类型使用hash_map时自定义hash函数
- hash_map 这个非stl的容器,基于hash table实现
- 常见的hash函数
- 整数的Hash函数
- Hash函数的基本知识
- 常见的Hash函数
- 经典的Hash函数
- hash函数的设置
- hash函数的选择
- 乱七八糟的Hash函数
- 字符串的hash函数
- hash函数的基本知识
- 常见的hash函数
- 常见的hash 函数
- 常见的hash函数
- boost.unordered 基于hash table的四种容器(即hash_map,unordered_mutimap,hash_set,hash_multiset)
- 使用ResultSet进行更新操作注意两点
- oracle更改默认端口号,监听器加密,限制ip访问---打造更安全的oracle系统
- freebsd 下程序随系统开机启动的一种方法(sery)
- Java的垃圾回收机制详解和调优
- 什么是PowerDesigner
- hash_map的hash函数
- 利用Oracle自带的连接池类的一例
- 北大青鸟 中国象棋 实习项目 (老师点评)
- 在程序中去掉EXCEL的只读属性
- JDBC 入门(一) - 开始
- 由__doPostBack方法引起的联想
- JDBC 入门(二) - 建立联接
- JDBC 入门(三) - 设置表
- 身份证带**的验证 JavaScript