设计一个key-value哈希表结构,要求key可以是任意类型

Daven172 2014-11-12 12:58:15
设计一个key-value哈希表结构,要求key可以是任意类型,包括基本数据类型(如int,double,char等)和自定义类型(struct,class等),不能使用STL中的类。
...全文
535 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
超级能量泡泡 2014-11-25
  • 打赏
  • 举报
回复
其实有点像序列化 做一个模板的hash方法,对于POD类型数据,直接按照字节加随机散列算法处理,对于其他类型使用一个辅助模板类对其成员变量、指针等进行散列然后把所有成员的散列做异或移位等运算。
Daven172 2014-11-24
  • 打赏
  • 举报
回复
引用 7 楼 ri_aje 的回复:
[quote=引用 6 楼 Daven172 的回复:] [quote=引用 5 楼 ri_aje 的回复:] 这个 “key可以是任意类型” 说的是编译期支持任意类型(同质容器用 template),还是运行期需要任意类型(异质容器用 void* 或类似的)呢?
用template,提供思路也可以,不一定要写代码,但是要基于C++[/quote] 那问题又绕会来了,你是哪里不会啊。 讲 hash table 大把的书和教程,网上肯定也不少。 想看例子的话,有多个版本 std::unordered_* 的实现可以参考。 实在看不出来你专门跑到这里是问什么。[/quote] 主要是想知道一种通用的做法,我用过STL里的hash_map和hash_set,key只能是基本类型或者string,看了一下源码,好像是强制转换成long来映射的(针对string会有专门的做法)。 之前并不知道有unordered_*这些类,发现确实可以使用自定义的类,但是需要提供自己写的hash函数。
Daven172 2014-11-13
  • 打赏
  • 举报
回复
引用 5 楼 ri_aje 的回复:
这个 “key可以是任意类型” 说的是编译期支持任意类型(同质容器用 template),还是运行期需要任意类型(异质容器用 void* 或类似的)呢?
用template,提供思路也可以,不一定要写代码,但是要基于C++
ri_aje 2014-11-13
  • 打赏
  • 举报
回复
引用 6 楼 Daven172 的回复:
[quote=引用 5 楼 ri_aje 的回复:] 这个 “key可以是任意类型” 说的是编译期支持任意类型(同质容器用 template),还是运行期需要任意类型(异质容器用 void* 或类似的)呢?
用template,提供思路也可以,不一定要写代码,但是要基于C++[/quote] 那问题又绕会来了,你是哪里不会啊。 讲 hash table 大把的书和教程,网上肯定也不少。 想看例子的话,有多个版本 std::unordered_* 的实现可以参考。 实在看不出来你专门跑到这里是问什么。
ri_aje 2014-11-13
  • 打赏
  • 举报
回复
这个 “key可以是任意类型” 说的是编译期支持任意类型(同质容器用 template),还是运行期需要任意类型(异质容器用 void* 或类似的)呢?
图灵狗 2014-11-12
  • 打赏
  • 举报
回复
参考 http://blog.csdn.net/lvsi12/article/details/8266884
ri_aje 2014-11-12
  • 打赏
  • 举报
回复
作业。。。?那不会啊。
Daven172 2014-11-12
  • 打赏
  • 举报
回复
不是作业,请大家看清楚题目:key可以是任意类型

64,646

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧