首页 > 其他分享 >map&unordered_map<key,value>key使用自定义类的要求

map&unordered_map<key,value>key使用自定义类的要求

时间:2024-09-22 22:04:22浏览次数:9  
标签:std map 自定义 类型 哈希 operator mapkey unordered

  1. std::unordered_map 的键要求

    • std::unordered_map 是基于哈希表的数据结构。
    • 它要求键类型必须支持哈希计算,也就是必须有对应的 std::hash 函数。
    • 另外,键类型还必须支持相等比较(通过 operator==)。

    如果键类型没有定义哈希函数(例如你自定义的 Json 类型),std::unordered_map 就无法工作,因为它不知道如何计算 Json 对象的哈希值,这会导致编译报错。

  2. std::map 的键要求

    • std::map 是基于红黑树(或其他自平衡二叉搜索树)实现的。
    • 它要求键类型必须支持严格的弱排序,也就是必须实现 operator< 或类似的比较运算符。通过这些运算符,std::map 可以根据键的顺序来组织元素。

    std::map 不需要哈希函数,因此即使键类型没有 std::hash 定义,只要能进行比较,它就可以正常工作。

总结:

  • std::unordered_map 依赖哈希表存储键值对,因此要求键类型必须提供哈希函数(通过 std::hash 实现)和相等比较(operator==)。
  • std::map 依赖排序的树结构存储键值对,因此只需要键类型支持比较(通常通过 operator< 实现)。

标签:std,map,自定义,类型,哈希,operator,mapkey,unordered
From: https://www.cnblogs.com/niumachen/p/18425993

相关文章

  • 数据处理与统计分析篇-day08-apply()自定义函数与分组操作
    一.自定义函数概述当Pandas自带的API不能满足需求,例如:我们需要遍历的对Series中的每一条数据/DataFrame中的一列或一行数据做相同的自定义处理,就可以使用Apply自定义函数apply函数可以接收一个自定义函数,可以将Series对象的逐个值或DataFrame的行/列数据传递给自......
  • C10-05-1-Nmap常用参数说明
    一、Nmap免责声明本文仅是个人对该工具的学习测试过程记录,不具有恶意引导意向。本文工具仅面向合法授权的企业安全建设行为,如您需要测试本工具的可用性,请自行搭建靶机环境。在使用本工具进行检测时,您应确保该行为符合当地的法律法规,并且已经取得了足够的授权。请勿对非授......
  • 解释器模式:如何实现一个自定义配置规则功能?
    解释器模式使用频率不算高,通常用来描述如何构建一个简单“语言”的语法解释器。它只在一些非常特定的领域被用到,比如编译器、规则引擎、正则表达式、SQL解析等。不过,了解它的实现原理同样很重要,能帮助我们思考如何通过更简洁的规则来表示复杂的逻辑。一、模式原理分析解释器模式......
  • 科研绘图系列:R语言树结构聚类热图(cluster heatmap)
    文章目录介绍加载R包导入数据数据预处理画图修改图形导出数据系统信息介绍热图结合树结构展示聚类结果通常用于展示数据集中的模式和关系,这种图形被称为聚类热图或层次聚类热图。在这种图中,热图部分显示了数据矩阵的颜色编码值,而树结构(通常称为树状图......
  • Cpp学习 -- <unordered_map>
    参考网站https://www.runoob.com/cplusplus/cpp-libs-unordered_map.html#include<unordered_map>在C++中,<unordered_map>是标准模板库(STL)的一部分,提供了一种基于哈希表的键值对容器。与std::map不同,unordered_map不保证元素的排序,但通常提供更快的查找速度。unord......
  • INTERNAL ERROR: cannot create temporary directory! /dev/mapper/centos-root满了
    一.问题现象磁盘空间不足[root@dockerfileharbor]#docker-composeup-d[2216]INTERNALERROR:cannotcreatetemporarydirectory![root@dockerfileharbor]#docker-composeupstopFailedtowriteallbytesforcryptography/hazmat/bindings/_openssl.abi3.sofwrite......
  • C++: 使用红黑树模拟实现STL中的map和set
    目录1.红黑树的迭代器++和--2.改造红黑树3.set的模拟实现4.map的模拟实现5.RBTree的改造代码博客主页:酷酷学正文开始1.红黑树的迭代器迭代器的好处是可以方便遍历,是数据结构的底层实现与用户透明打开C++的源码我们可以发现,其实源码中的底层大概如下......
  • 如何在 WordPress 网站中使用 Importmap
    我一直在尝试开发一个基本的wordpress经典主题,无需构建步骤,我可以将其用作入门主题,以便将来开发客户端站点。在撰写本文时,我没有做任何自由职业,因为我正在为一家网络机构工作,并且我们正在构建的网站都涉及构建步骤。所以我想写一个关于如何在wordpress主题中使用importmap的......
  • 如何使用 AWS 部署带有自定义域的 React 项目?
    使用aws(amazonwebservices)等云提供商通过自定义域部署react应用程序可能看起来令人畏惧,但当分解为可管理的步骤时,它就很简单。在本文中,我们将指导您完成从构建应用程序到使其在您的自定义域上运行的整个过程。当您准备好与世界分享您的react项目时,使用自定义域部署它可以为......
  • uniapp中<map>地图怎么实现点位聚合?
    推荐学习文档golang应用级os框架,欢迎stargolang应用级os框架使用案例,欢迎star案例:基于golang开发的一款超有个性的旅游计划app经历golang实战大纲golang优秀开发常用开源库汇总想学习更多golang知识,这里有免费的golang学习笔记专栏想学习更多前端知识,这里有免费的前端专栏......