std::map自定义类型key

故事背景:最近的需求需要把一个结构体struct作为map的key,时间time作为value,定义:std::map

技术调研:众所周知,map是STL库中常用的关联式容器,底层实现就不多提了是平衡二叉树,今天主要关注的是map的KEY值

map有四个参数,第一个为_Kty就是key,第二个_Ty就是value,第三、四都有默认值,所以在一定的条件下可以不填

问题阐述:std::map

std::map自定义类型key

这就是map中第三个参数的作用,提供一个less函数,比较key值间的大小,从而构建二叉树,有人问了为什么基本类型就不需要呢,这是因为基本类型可以直接进行大小比较

解决办法:

这就是map第三个参数的作用了

需要我们提供一个比较大小的仿函数,仿函数就是类似于函数的类,不过大都是重载了一些操作符如’()’号、’

Original: https://www.cnblogs.com/xupeidong/p/11976671.html
Author: 徐沛东
Title: std::map自定义类型key

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/607036/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • php uniapp 支付宝app支付,前后端实战源码

    uniapp端,前端代码 app.php端代码 Original: https://www.cnblogs.com/xiaofengzheng/p/16457966.htmlAut…

    Linux 2023年6月7日
    087
  • 通过配置文件(.htaccess)实现文件上传

    一·什么是服务器配置文件.htaccess许多服务器还允许开发人员在各个目录中创建特殊的配置文件,以便覆盖或添加一个或多个全局设置。例如,Apache 服务器将从一个名为(.hta…

    Linux 2023年6月7日
    079
  • 分布式计算的本质、特点和未来

    在计算机早期,都是由一台主机承担全部存储和计算工作,这种方式被称为集中处理。后来随着处理器发展和网络出现,衍生出客户机/服务器架构,即由服务器完成主要的存储计算工作,客户机则负责较…

    Linux 2023年6月6日
    0120
  • XShell免费版的安装配置教程以及使用教程(超级详细)

    ​一、 XShell的作用 XShell可以在Windows界面下来访问远端不同系统下的服务器,从而比较好的达到远程控制终端的目的。它支持 RLOGIN、SFTP、SERIAL、T…

    Linux 2023年5月27日
    0170
  • Windows针对子目录共享权限控制

    Windows的共享文件设置有两种,一种是共享这一个目录然后里面的子文件,文件夹权限则集成;一种是共享这个目录后,里面的子文件与文件夹权限可单独控制。 共享一 image-2021…

    Linux 2023年6月8日
    097
  • Docker快速部署clickhouse

    Docker快速部署clickhouse Clickhouse特点 完备的DBMS:不仅是个数据库,也是个数据库系统 列存储和数据压缩:典型的olap数据库特性 向量化并行:利用C…

    Linux 2023年6月8日
    096
  • Vector底层实现

    vector的三个私有成员 :_start 记录初始位置, _finish 记录有效字符, _endofstoage 记录容量大小 vector会存储的类型不同,所以要用模版来定类…

    Linux 2023年6月13日
    0101
  • python中的反射

    python反射简介 所谓反射是指通过字符串的方式获取对象,然后执行对象的属性或方法。在python中一切皆对象,因此我们可以对一切事物进行发射。 关于反射python为我们提供了…

    Linux 2023年6月7日
    0100
  • Linux at命令详解

    大家好,我是良许。 在生活中,我们有太多的场景需要使用闹钟,比如早上7点起床,下午4点开会,晚上8点购物,等等。 [En] In life, we have too many sc…

    Linux 2023年5月27日
    0111
  • YUM简单入门

    1.制作YUM源先关闭相关安全设置,安装vsftpd 挂载到共享目录 对新增的安装包目录生成包的元数据(把包中依赖关系统计) 配置yum路径特性 生成yum 2.YUM命令简单使用…

    Linux 2023年6月7日
    099
  • 上篇:34个JavaScript栗子,从易到难。

    alert("hello world") document.write("hello world") console.log("好…

    Linux 2023年6月7日
    089
  • django admin用法

    django admin用法 – 基本使用 给几个字段加标题 添加关联的对象 自定义后台展示列表字段 过滤功能 搜索功能 django admin用法 基本使用 fro…

    Linux 2023年6月14日
    0182
  • WPF 已知问题 Popup 吃掉 PreviewMouseDown 事件

    在 WPF 中,使用 Popup 也许会看到 PreviewMouseDown 事件被吃掉 因为 PreviewMouseDown 是 RoutingStrategy.Direct…

    Linux 2023年6月6日
    0128
  • 如何使用yum来下载RPM包而不进行安装

    yum是基于Red Hat的系统(如CentOS、Fedora、RHEl)上的默认包管理器。使用yum,你可以安装或者更新一个RPM包,并且他会自动解决包依赖关系。但是如果你只想将…

    Linux 2023年6月6日
    0165
  • linux free命令available小于free值

    问题:前段时间在做服务器巡检时发现系统可用内存值小于空闲内存值 分析:查询网上各种资料,都说的是 available=free + buff/cache 这样一个大致计算方式,按这…

    Linux 2023年6月14日
    0173
  • NJU软件分析笔记(2)

    NJU Static Analysis Notes(2)——Data Flow Analysis Ⅰ 课程链接本次课程主要内容 Overview of Data Flow Anal…

    Linux 2023年6月8日
    0106
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球