火山软件开发平台

标题: 【源码】更新-魔改无序哈希表,真正意义支持任意火山类型 [打印本页]

作者: 小小小小鸟    时间: 2023-7-21 11:10
标题: 【源码】更新-魔改无序哈希表,真正意义支持任意火山类型
本帖最后由 小小小小鸟 于 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: 任意数据类型,包含基本数据类型和各种类。
(, 下载次数: 29)
(, 下载次数: 28)

如有问题,请指正~

作者: wangvoldp    时间: 2023-7-21 12:15
6666666666
作者: 山梦    时间: 2023-7-21 12:30
66666666666
作者: shuimiao    时间: 2023-7-21 13:08
不知道这样改会不会有问题。因为吴总竟然把xx到字节集哈希表给注释了,据说是存在问题。。但是我给取消注释用着也没啥问题。。
作者: 芒g一号    时间: 2023-7-21 13:10
感谢分享
作者: 小小小小鸟    时间: 2023-7-21 15:39
shuimiao 发表于 2023-7-21 13:08
不知道这样改会不会有问题。因为吴总竟然把xx到字节集哈希表给注释了,据说是存在问题。。但是我给取消注释 ...

我自己测试也没发现问题,只要字节集类的构造和析构没有问题,按理说是不会有问题的
作者: 363832663    时间: 2023-7-21 17:27
66666666666
作者: 网络注册会员    时间: 2023-7-21 18:19
支持开源
作者: 888888    时间: 2023-7-21 22:25
谢谢分享
作者: aaa2778    时间: 2023-7-22 01:02

支持开源
作者: fengyishen    时间: 2023-7-22 02:44
学习了可扩展那个帖子,真心不错!~ 又出新作了
作者: 小小小小鸟    时间: 2023-7-22 04:57
fengyishen 发表于 2023-7-22 02:44
学习了可扩展那个帖子,真心不错!~ 又出新作了

谢谢支持~
作者: alanwoo    时间: 2023-7-23 10:25
学习学习
作者: huoshan333    时间: 2023-7-23 14:53
谢谢分享
作者: yb1984724    时间: 2023-7-24 11:31
谢谢分享
作者: gzylove    时间: 2023-7-24 15:27
支持开源
...
作者: wanmei126    时间: 2023-7-24 22:13

支持开源
作者: alexqj    时间: 2023-7-24 22:33
666666
作者: ziv    时间: 2023-7-24 22:44
如果您要查看本帖隐藏内容请回复
作者: Yisin    时间: 2023-7-25 11:53

作者: 小小小小鸟    时间: 2023-7-29 11:49
更新顶一下
作者: 韦贝贝    时间: 2023-8-28 08:05
66666666666
作者: kca    时间: 2023-10-23 16:48
6666666
作者: kantal    时间: 2023-10-23 18:01
支持开源,谢谢分享~
作者: assume2013    时间: 2023-10-25 11:29
官方应该改进
作者: smk718    时间: 2023-11-6 09:16
66666666~~~
作者: rinipp    时间: 2023-11-6 17:35
66666
作者: 太早    时间: 2023-12-25 17:38
6666666666666666
作者: 次元の叶子    时间: 2023-12-25 20:25
让 江小白 来看看帖子里藏了啥好东西~~~
作者: urenai    时间: 2023-12-28 12:24
学习     
作者: 啧啧啧小短腿    时间: 2023-12-28 14:46
学习一下
作者: 197062257    时间: 2024-3-8 10:20
学习拿走了谢谢
作者: 小蜗牛    时间: 2024-3-16 17:59
下载来看看~
作者: zlk    时间: 2024-3-16 18:48
学习一下
作者: xjb    时间: 2024-4-28 21:49
6666666666666666666
作者: qq25869920    时间: 2024-5-21 10:25
学习下




欢迎光临 火山软件开发平台 (https://bbs.voldp.com/) Powered by Discuz! X3.4