力扣leecode刷题使用到的哈希表UThash是什么意思
在leecode刷题的时候经常看到用到哈希表的官方题解中都是直接调用UThash,可以用来检测是否有重复元素出现。这其实是一个在GitHub上开源的非常优秀的对哈希表的实现。
下载地址:https://github.com/troydhanson/uthash
下载下来是一个压缩包,里面只有一个文件夹uthash-master,随便解压缩到一个能找到的地方。打开它,打开里面的src文件夹然后把这个路径复制下来。
我这里复制出来的路径就是C:\Users\11543\Desktop\CS\uthash-master\src
之后打开VS2010(其他版本也类似)新建项目之后找到“项目-属性”
在打开的页面里点击“配置属性——VC 目录——包含目录——右边的小三角——编辑”
在新打开的页面里点击“新行”,然后把刚刚复制的路径粘贴进输入框中,点击右下角确定就ok了。(或者在输入框右边有三个点,点开那个然后就在里面定位到uthash-master——src目录中点击选择文件夹。)
这样就算配置完成了,在代码中直接输入include“uthash.h”就可以使用了。(这里我的代码是“217.寻找重复元素”中官方题解的代码)
下面是最最基本的用法。
完整用法可以参考
- 官方英文使用文档:http://troydhanson.github.io/uthash/userguide.html#_add_item
- 一篇对这个文档的翻译博客https://blog.csdn.net/fan_h_l/article/details/107241520
或者找其他写的比较好的博客学习
就对应着上面的那段代码来简单说一下用法
首先需要创建一个结构体
struct hashTable {
int key;
UT_hash_handle hh;
};
UT_hash_handle hh;
这行代码是用来表明这个结构体是一个哈希表类型,照抄就可以。
key就是你想存储的数据,什么类型都可以(只是我目前只用过int类型)。
另外在使用时必须先定义一个该结构体的空指针,用于指向保存数据的hash表(官方文档原文,没看懂)。一定要置为空,名字随便起,后面有用。
struct hashTable* set = NULL;
查找:
struct hashTable* tmp = NULL;
HASH_FIND_INT(set, nums i, tmp);
HASH_FIND_INT();
- 第一个参数就是最开始让定义的那个空白指针。
- 第二个参数是你要查找的key值(注意是指针类型,这里的nums是个数组,本来就是地址,如果要查一个int类型的数记得前面加“&”取地址)。
- 第三个参数是如果找到的话就存在第三个参数里面,所以新建了一个指针作为容器(找不到就不给tmp赋值)。
插入:
tmp = (struct hashTable*)malloc(sizeof(struct hashTable));
tmp->key = nums[i];
HASH_ADD_INT(set, key, tmp);
HASH_ADD_INT();
- 第一个参数还是开头那个空白指针
- 第二个参数是结构体中对应的成员名称(结构体中定义的是int key;如果定义int key1;这里就填key1)
- 第三个参数是要插入的数据,已经提前放在结构体里面了。
注意,必须先确保哈希表里没有相同元素才能插入,UThash不会替你完成这件事。也就是说你必须先用查找功能保证没有了才能插入(这也是正常使用中要自定义函数接口的意义)。
这道题中就只用到了这两个功能,就先只介绍这两个功能。
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhgafkbh
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
怎样阻止微信小程序自动打开
PHP中文网 06-13 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01