递归火山软件开发平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

15

主题

156

帖子

1812

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
1812
跳转到指定楼层
楼主
发表于 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: 任意数据类型,包含基本数据类型和各种类。


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

如有问题,请指正~
回复

使用道具 举报

9

主题

98

帖子

1126

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
1126
39#
发表于 2024-9-20 17:41:23 | 只看该作者
谢谢共享
回复

使用道具 举报

1

主题

36

帖子

227

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
227
38#
发表于 2024-9-18 13:58:20 | 只看该作者
学习学习学习
回复

使用道具 举报

6

主题

124

帖子

1475

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
1475
37#
发表于 2024-6-2 11:31:43 | 只看该作者
哈希表
凝逸AI:nyav.net、深度学习.图像识别/分类.文字.OCR
回复

使用道具 举报

5

主题

52

帖子

531

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
531
36#
发表于 2024-5-21 10:25:56 | 只看该作者
学习下
回复

使用道具 举报

1

主题

24

帖子

117

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
117
35#
发表于 2024-4-28 21:49:11 | 只看该作者
6666666666666666666
回复

使用道具 举报

11

主题

131

帖子

1496

积分

金牌会员

Rank: 6Rank: 6

积分
1496
34#
发表于 2024-3-16 18:48:19 | 只看该作者
学习一下
回复

使用道具 举报

86

主题

947

帖子

4884

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
4884
33#
发表于 2024-3-16 17:59:26 | 只看该作者
下载来看看~
回复

使用道具 举报

0

主题

64

帖子

297

积分

中级会员

Rank: 3Rank: 3

积分
297
32#
发表于 2024-3-8 10:20:10 | 只看该作者
学习拿走了谢谢
回复

使用道具 举报

0

主题

2

帖子

6

积分

新手上路

Rank: 1

积分
6
31#
发表于 2023-12-28 14:46:25 | 只看该作者
学习一下
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-23 06:30 , Processed in 0.098422 second(s), 27 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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