在 C 中实现 HashMap [关闭]

2023-12-07

如何像 C++ STL 中那样用 C 从头开始​​创建 Hashmap?

将考虑哪些参数以及如何测试哈希图?例如,在您可以说哈希图完成之前,您将运行哪些基准测试用例?


如果您了解它们背​​后的基础知识,那么它应该不会太难。

通常,您会创建一个名为“buckets”的数组,其中包含键和值,并带有一个可选的指针来创建链接列表。

当您使用键访问哈希表时,您可以使用自定义哈希函数处理该键,该函数将返回一个整数。然后,您取结果的模数,这就是数组索引或“存储桶”的位置。然后,您使用存储的密钥检查未散列的密钥,如果匹配,则您找到了正确的位置。

否则,就会发生“冲突”,必须遍历链表并比较键,直到匹配为止。 (请注意,某些实现使用二叉树而不是链表来进行冲突)。

查看这个快速哈希表的实现:

https://attractivechaos.wordpress.com/2009/09/29/khash-h/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 C 中实现 HashMap [关闭] 的相关文章

  • OpenCv读/写视频色差

    我试图简单地使用 openCV 打开视频 处理帧并将处理后的帧写入新的视频文件 我的问题是 即使我根本不处理帧 只是打开视频 使用 VideoCapture 读取帧并使用 VideoWriter 将它们写入新文件 输出文件看起来比输入更 绿
  • asp.net 文本框文本模式数字,仅允许数字

    我只是想知道 ASP NET 中是否有一种方法只允许文本框中的数字textmode number 当我使用这个时
  • 迭代变量并查找特定类型实例的技术

    我想迭代进程中内存中的变量 通过插件动态加载 并查找特定类型的实例 以前我可以找到特定类型 或内存中的所有类型 我可以创建类型的实例 我可以获取作为不同类型的字段包含的实例 但我无论如何都不知道只是 搜索 特定类型的实例 一种方法是使用 W
  • 为什么我不能用 `= delete;` 声明纯虚函数?

    Intro 纯虚函数使用通用语法声明 virtual f 0 然而 自 c 11 以来 有一种方法可以显式地传达non existence 特殊 成员函数的 Mystruct delete eg default constructor Q
  • 使用post方法将多个参数发送到asp.net core 3 mvc操作

    使用 http post 方法向 asp net mvc core 3 操作发送具有多个参数的 ajax 请求时存在问题 参数不绑定 在 dot net 框架 asp net web api 中存在类似的限制 但在 asp net mvc
  • 对齐 GridView 中的行值

    我需要在 asp net 3 5 中右对齐 gridview 列中的值 我怎样才能做到这一点
  • 显示异常时的自定义错误消息:从客户端检测到潜在危险的 Request.Form 值

    我在我的 Web 应用程序中使用 ASP NET 的登录控件 当发生此异常时 我想在标签上显示一种有趣的错误类型System Web HttpRequestValidationException A potentially dangerou
  • 如何配置 WebService 返回 ArrayList 而不是 Array?

    我有一个在 jax ws 上实现的 java Web 服务 此 Web 服务返回用户的通用列表 它运行得很好 Stateless name AdminToolSessionEJB RemoteBinding jndiBinding Admi
  • 将数据打印到文件

    我已经超载了 lt lt 运算符 使其写入文件并写入控制台 我已经为同一个函数创建了 8 个线程 并且我想输出 hello hi 如果我在无限循环中运行这个线程例程 文件中的o p是 hello hi hello hi hello hi e
  • 如何重置捕获像素的值

    我正在尝试创建一个 C 函数 该函数返回屏幕截图位图中每四个像素的 R G 和 B 值 这是我的代码的一部分 for int ix 4 ix lt 1366 ix ix 4 x x 4 for int iy 3 iy lt 768 iy i
  • 在 C 中使用 GNU automake 中的解析器

    我是 GNU autotools 的新手 在我的项目中使用了 lex 和 yacc 解析器 将它们作为 makefile am 中的源代码会产生以下错误 配置 in AC CHECK PROGS YACC bison yacc none i
  • 当我“绘制”线条时,如何将点平均分配到 LineRenderer 的宽度曲线?

    我正在使用线条渲染器创建一个 绘图 应用程序 现在我尝试使用线条渲染器上的宽度曲线启用笔压 问题在于 AnimationCurve 的 时间 值 水平轴 从 0 标准化为 1 因此我不能在每次添加位置时都在其末尾添加一个值 除非有一个我不知
  • 如何一步步遍历目录树?

    我发现了很多关于遍历目录树的示例 但我需要一些不同的东西 我需要一个带有某种方法的类 每次调用都会从目录返回一个文件 并逐渐遍历目录树 请问我该怎么做 我正在使用函数 FindFirstFile FindNextFile 和 FindClo
  • 在类的所有方法之前运行一个方法

    在 C 3 或 4 中可以做到这一点吗 也许有一些反思 class Magic RunBeforeAll public void BaseMethod runs BaseMethod before being executed public
  • strcmp 给出分段错误[重复]

    这个问题在这里已经有答案了 这是我的代码给出分段错误 include
  • 转到定义:“无法导航到插入符号下的符号。”

    这个问题的答案是社区努力 help privileges edit community wiki 编辑现有答案以改进这篇文章 目前不接受新的答案或互动 我今天突然开始在我的项目中遇到一个问题 单击 转到定义 会出现一个奇怪的错误 无法导航到
  • 我在在线程序挑战编译器中遇到演示错误

    include
  • 双精度类型二维多维数组的 pinvoke 编组作为 c# 和 c++ 之间的输入和输出

    我有以下我正在尝试解决的双物质类型的 2d 多维数组的 c 和 c pinvoke 编组 我已经查看了以下热门内容以获得我目前拥有的内容使用双精度数组进行 P Invoke 在 C 和 C 之间编组数据 https stackoverflo
  • WinRT 定时注销

    我正在开发一个 WinRT 应用程序 要求之一是应用程序应具有 定时注销 功能 这意味着在任何屏幕上 如果应用程序空闲了 10 分钟 应用程序应该注销并导航回主屏幕 显然 执行此操作的强力方法是在每个页面的每个网格上连接指针按下事件 并在触
  • 使用 Crypto++ 获取 ECDSA 签名

    我必须使用 Crypto 在变量中获取 ECDSA 签名 我在启动 SignMessage 后尝试获取它 但签名为空 我怎样才能得到它 你看过 Crypto wiki 吗 上面有很多东西椭圆曲线数字签名算法 http www cryptop

随机推荐

  • 如何读取Scala.js中的资源文件?

    假设我有一个map csv文件位于同一级别 或其他一些 web 应用程序可访问的位置 index dev opt html e g key1 value1 key2 value2 keyN valueN 我想读取该 CSV 文件并最终得到一
  • Android:运行 ActionBarSherlock-Plugin-Maps 时出现 ClassNotFoundException

    我正在尝试设置一个使用 Jake Wharton 的示例项目动作栏夏洛克 with ActionBarSherlock 插件 地图 我按照说明进行操作here and here 我不一定需要碎片 这是我创建的简单类 package com
  • Tensorflow Slim 恢复模型并预测

    我目前正在尝试学习如何使用 TF Slim 并且正在遵循本教程 https github com mnuke tf slim mnist 假设我已经在检查点中保存了经过训练的模型 那么我现在如何使用该模型并应用它 例如 在教程中 如何使用经
  • 如何在脚本化管道中使用 SkipDefaultCheckout

    我想使用选项 SkipDefaultCheckout True 在脚本化的管道中 是否可以 你可以尝试答案来自这里 node skipDefaultCheckout
  • Android rxJava:如何从缓存获取数据并同时在后台更新它?

    我刚刚开始学习rxJava对于 Android 并想要实现常见用例 从缓存中请求数据并显示给用户 从网络请求数据 服务器更新存储中的数据并自动显示给用户 传统上最好的方案是使用游标加载器要从缓存中获取数据 请在单独的线程中运行 Web 请求
  • Bootstrap 更新 Ajax 记录时成功发出警报

    我想使用引导警报来显示更新现有记录的成功消息 这就是我所拥有的 索引 php
  • 即使项目构建,Visual Studio也会显示错误

    我在 C 解决方案上使用 Visual Studio 时遇到问题 它显示完全随机的错误 但项目会构建 现在 我有 33 个有错误的文件 并且我可以在所有文件中看到红色波浪线 我尝试清理 重建解决方案 关闭 Visual Studio 甚至重
  • C++ 中类型错误的参数

    我正在使用 Visual Studio 2013 错误显示 WCHAR 类型的参数与 const char 类型的参数不兼容 while processId system CLS cout lt lt Searching for game
  • 在 JavaScript/TypeScript 中迭代 Json 数据

    我需要迭代这个 Json 数据并在 JavaScript TypeScript No Jquery 中向网格添加值 GridHeader Id Id Name Full Name Age Age GridData Id 3 name Vu
  • 多种屏幕分辨率[重复]

    这个问题在这里已经有答案了 我正在开发 320 480 的应用程序 如何让应用程序在480 854屏幕上运行 当我尝试在 480 854 屏幕下运行时 应用程序原始设计看起来很小 我想为 android 中的每个屏幕创建单独的布局吗 如果是
  • 有状态集部署期间出现“pod has unbound instant PersistentVolumeClaim”错误

    我正在通过 statefulset 部署 stolon 默认来自 stolon 存储库 我在 statefulset 配置中定义了 volumeClaimTemplates metadata name data spec accessMod
  • 如何使用 ASP.Net 在 SQL Server 中插入文件?

    我正在开发一个 ASP NET 应用程序 C 它使用 ADO NET 实体框架连接到 SQL Server 2008 此应用程序的用户可以从本地硬盘驱动器中选择图像以插入到 SQL Server 中 我怎样才能做到这一点 我知道如何将图像存
  • 生成一系列日期 - 使用日期类型作为输入

    文档 for generate series说这个论点可以是int or bigint for generate series start stop and generate series start stop step 案例和timest
  • 我需要使用 UNITY 为 Android 和 IOS 应用程序设置保存图片的路径

    我的实际代码 function Update if Input GetMouseButtonDown 0 Debug Log foto Application CaptureScreenshot Application dataPath S
  • JavaScript post 请求就像表单提交

    我正在尝试将浏览器定向到不同的页面 如果我想要一个 GET 请求 我可能会说 document location href http example com q a 但除非我使用 POST 请求 否则我尝试访问的资源将无法正确响应 如果这不
  • 如何修复 conda 中的包解析警告?

    每当我尝试conda update all or conda install package name我一直收到一些关于以下问题的软件包解析警告tensorflow gpu 我不知道如何修复它们 我真的很感激任何帮助 这是我的conda i
  • gcloud 应用程序部署抱怨缺少临时存储桶

    我已经用了几个月或几年来删除staging and artifacts之后的桶gcloud app deploy命令以节省计费成本 这些临时文件永远留在那里 我会为此付费 它一直有效 直到今天早上我收到此错误 ERROR gcloud ap
  • R - 向量/数组加法

    我在向量或数组运算方面遇到了一些麻烦 我有三个 3D 数组 我想找到它们的平均值 我怎样才能做到这一点 我们不能使用mean 因为它只返回一个值 更重要的是数组中的一些单元格是 A 这意味着如果我只是将它们添加起来 A B C D 3 的结
  • 如何在 JavaScript 中检测浏览器“最小化”和“最大化”状态? [复制]

    这个问题在这里已经有答案了 我正在尝试寻找浏览器最小化 and 最大化状态 因为我想根据浏览器状态触发 AJAX 请求 有谁知道如何使用 JavaScript 检测浏览器状态 我认为检测这些状态的唯一可靠方法是检查可见性API由 HTML5
  • 在 C 中实现 HashMap [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 如何像 C STL 中那样用 C 从头开始 创建 Hashmap 将考虑哪些参数以及如何测试哈希图 例如 在您可以说哈希图完成之前 您将运行哪些基准测试用例 如果您了解它们背 后