递归火山软件开发平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 火山 源码 类库
查看: 48490|回复: 47
打印 上一主题 下一主题

[视窗] 【源码】更新-魔改无序哈希表,真正意义支持任意火山类型

[复制链接]

22

主题

278

帖子

3273

积分

金牌会员

Rank: 9Rank: 9Rank: 9

积分
3273
跳转到指定楼层
#
发表于 2023-7-21 11:10:37 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式
本帖最后由 小小小小鸟 于 2023-7-28 18:48 编辑

已过时:由于火山PC的一些特性,无法在嵌入代码的<include></include>中使用自定义类的数据类型(除了指针和引用),使得在定义哈希表类型时如果是自定义类,便无法通过编译,之前的解决办法是值类型设置为变整数存入对象指针然后再读指针处对象(或者用对象包装类再强制类型转换),本源码通过将类成员变量 unordered_map改为变整数(指针) 来实现支持任意值类型(然后在具体方法中实现变整数指针到unordered_map的变化引用,长的让人心累),另外扩充 HashFunc来完善键的哈希计算,就不用分开定义 基础值类型和文本型与字节集的模板类了,最终实现通用哈希表模板类(改自"飞翔的企鹅"的封装代码,感谢大佬的付出):
已过时:  模板类型1-key: 基本数据类型(字节,短整数,整数,长整数,变整数,小数,字符,文本型,字节集类)
已过时:  模板类型2-value: 任意数据类型,包含基本数据类型和各种类
游客,如果您要查看本帖隐藏内容请回复

2023-07-23:已过时:改变了写法,用 @def_marco和 @m<XX>简化了在各个方法中的指针到对象变换,火山源码的可读性好了一点,但是翻译成CPP仍然是很长
游客,如果您要查看本帖隐藏内容请回复

2023-07-28:通过使用  std::remove_pointer_t 省去了复杂的指针到unordered_map的转换,保留了 unordered_map 作为类成员变量,更加简化了各个方法中的代码。在HashFunc和EqualFunc中通过模板SFINAE和操作符重载,简化了写法,并且实现了key是自定义类的可能型。PS:越来越觉得c++模板实在太优雅了~要学的东西太多了···

模板类型1-key: 任意数据类型,包含基本数据类型和各种类。当key为自定义类时,建议自行实现GetHash方法或继承可哈希基类覆盖GetHash方法,否则会调用默认哈希函数返回1,此时相当于链表结构(加上外层包装甚至还不如),检索方式从头到尾,对大量数据极不友好。
模板类型2-value: 任意数据类型,包含基本数据类型和各种类。


游客,如果您要查看本帖隐藏内容请回复

如有问题,请指正~
回复

使用道具 举报

0

主题

5

帖子

30

积分

新手上路

Rank: 1

积分
30
47#
发表于 2026-6-17 22:32:39 | 只看该作者
过来学习一下
回复

使用道具 举报

1

主题

245

帖子

1414

积分

金牌会员

Rank: 9Rank: 9Rank: 9

积分
1414
QQ
46#
发表于 2026-6-13 17:06:49 | 只看该作者
学习
回复

使用道具 举报

0

主题

5

帖子

34

积分

新手上路

Rank: 1

积分
34
45#
发表于 2026-5-27 10:06:28 | 只看该作者
6666666666
回复

使用道具 举报

1

主题

53

帖子

573

积分

高级会员

Rank: 4

积分
573
44#
发表于 2026-1-30 17:08:39 | 只看该作者
【源码】更新-魔改无序哈希表,真正意义支持任意火山类型
回复

使用道具 举报

25

主题

69

帖子

741

积分

金牌会员

Rank: 9Rank: 9Rank: 9

积分
741
43#
发表于 2025-10-27 21:27:01 | 只看该作者
66666
回复

使用道具 举报

0

主题

4

帖子

50

积分

注册会员

Rank: 2

积分
50
42#
发表于 2025-10-22 10:12:09 | 只看该作者
学习了无敌了同学
回复

使用道具 举报

107

主题

799

帖子

4220

积分

金牌会员

Rank: 9Rank: 9Rank: 9

积分
4220
41#
发表于 2025-8-23 17:40:01 | 只看该作者
感谢大佬分享
回复

使用道具 举报

2

主题

66

帖子

776

积分

金牌会员

Rank: 9Rank: 9Rank: 9

积分
776
QQ
40#
发表于 2025-8-19 09:55:35 | 只看该作者
RE: 【源码】更新-魔改无序哈希表,真正意义支持任意火山类型 [修改]
回复

使用道具 举报

37

主题

252

帖子

1257

积分

金牌会员

Rank: 9Rank: 9Rank: 9

积分
1257
39#
发表于 2025-8-8 12:04:50 | 只看该作者
kankanxue
回复

使用道具 举报

113

主题

956

帖子

5337

积分

金牌会员

Rank: 9Rank: 9Rank: 9

积分
5337
38#
发表于 2025-4-16 09:48:56 | 只看该作者
6666666666
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|递归火山软件开发平台 ( 鄂ICP备18029190号 )

GMT+8, 2026-7-13 18:29 , Processed in 0.112652 second(s), 28 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表