c++ map 结构体作为key关键词

2023-10-27

c++  map 结构体作为key关键词

结构体的定义:
这里的结构体是三个值 int x; int y; int label;
当三个值作为KEY值时,你需要重新定义它的对比操作operator,这样才能对map进行查找操作;

//数据结构声明;并且对key的查找操作进行定义,这样才能进行find等操作
struct point
{
    int x;
    int y;
    point(const int A,const int B) :
            x(A), y(B) {}
    friend bool operator < (const point &A, const point &B);
};


inline bool operator < (const point& A,const point& B)
{
    return A.x < B.x || (A.x==B.x && A.y<B.y) ;
}


struct Point_Label
{
    int x;
    int y;
    int label;

    Point_Label(const int A,const int B, const int C) :
            x(A), y(B) , label(C){}
    friend bool operator < (const Point_Label &A, const Point_Label &B);

};



inline bool operator < (const Point_Label& A,const Point_Label& B)
{
    return A.label < B.label || (A.label==B.label && A.x<B.x)  || (A.label==B.label && A.x==B.x && A.y<B.y);
}

map的使用:

std::map<Point_Label, float > PRM;
int i = 1;
int j = 2;
int cl = 12;
//当前结构就是point(i,j),cl 作为key值
Point_Label pointLabel(i, j, cl);
std::map<Point_Label, float>::iterator it;
//查找操作,是否存在pointLabel,不存在,构建make_pair插入
it = PRM.find(pointLabel);
if (it !=PRM.end()){
    it -> second += 1 ;
} else{
    PRM.insert(std::make_pair(pointLabel, 1));

}


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

c++ map 结构体作为key关键词 的相关文章

随机推荐

  • element 跨页多选row-key

    element 跨页多选 核心 vue
  • spring中过滤器(filter)、拦截器(interceptor)和切面(aop)的执行顺序

    1 程序执行的顺序是先进过滤器 再进拦截器 最后进切面 注意 如果拦截器中preHandle方法返回的为false时 则无法进入切面 例子如下 RestController RequestMapping user public class
  • -XX:+UseCGroupMemoryLimitForHeap 无法创建虚拟机问题

    XX UseCGroupMemoryLimitForHeap 启动参数 无法创建虚拟机问题 记录一个问题 因jdk11版本稳定 为了优化jvm内存和gc 公司决定将jdk8升级到11 因运行环境是k8s 为了使jvm保留根据容器规范的内存
  • Android SurfaceFlinger分析

    SufaceFlinger的构成并不是太复杂 复杂的是他的客户端建构 SufaceFlinger主要功能是 1 将Layers Surfaces 内容的刷新到屏幕上 2 维持Layer的Zorder序列 并对Layer 最终输出做出裁剪计算
  • json中json.loads()与json.dumps()的区别

    最近对于json中loads与dumps总是搞不清 查了资料才总算搞明白了 1 json dumps 和json loads 是json格式处理函数 2 json dumps 函数是将一个Python数据类型列表进行json格式的编码解析
  • 超详细Git 安装教程(Windows)

    Git 安装教程 windows 给新电脑安装下git 顺便记下笔记 安装版本为2 30 2 git下载地址 https git scm com download win 下载后点击即可进行安装 下面是具体安装步骤 1 许可申明 点击 Ne
  • element-ui table 对数据进行处理后渲染

    html 在需要处理的列上加formatter自定义函数 如下 对票号进行后8位截取
  • 在GitHub上搭建Hexo个人博客

    文章目录 概述 准备工作 安装Git 安装Node js 安装Hexo 执行安装命令 初始化网站 生成默认网页 启动本地预览服务 修改主题 部署到GitHub 配置免密SSH登陆 创建个人主页仓库 绑定个人域名 可选 上传Hexo生成的博客
  • 一个超简单的反编译任务(IDAPro、X32dbg)

    一个超简单的反汇编任务 所需工具 IDAPro X32dbg Visual C 6 0 实验步骤 首先 我们新建一个简单的程序并编译运行 这里笔者建立了一个弹窗程序 运行结果如下 进行IDA逆向分析 我们可以通过空格键来切换视图 这时可以看
  • 微信小程序中使用计算属性

    微信小程序中使用计算属性 在小程序开发中 它的基本原理和vue是大同小异 但是有的时候就是因为这小异造成很多不必要的麻烦 在小程序开发中 改变数据更新视图用的是Page prototype setData方法 遇到一些复杂数据逻辑判断时 代
  • STM32_中断系统_概述

    1 中断的基本概念 2 NVIC 嵌套向量控制器 中断及异常向量表 3 中断优先级 1 中断的基本概念 1 1处理器中的中断 在处理器中 CPU正在执行某一段代码时遇到内部或者外部的紧急事件需要处理 暂停当前执行的代码 转而去处理紧急事件
  • React中jsx或tsx的switch语句使用

    React中jsx或tsx的switch语句使用 gt switch case case 1 return break case 2 return break
  • SRM系统选择哪种部署方式?

    传统线下采购模式存在过程不透明 合规性差 沟通效率低且采购成本高等痛点 随着互联网技术不断发展 国内以阿里云 腾讯云 华为云为代表的丛多互联网企业都提供了上云基础服务 IAAS 各种SaaS管理软件也逐渐被中国企业接受 在此背景下 近几年不
  • Qt自定义控件的使用教程

    自定义的控件无非是继承自Qt的某个类自定义的一个类 常用的是继承自QWidget类 在Qt可视化编程中 可视化编程有两种方式 第一种 使用常规的方法 创建一个该类的对象 然后加入到布局管理器中 show一下就可以看到效果了 第二种 Qt D
  • mysql innodb flush_MySQL Config--参数innodb_flush_method

    延迟写 传统的UNIX实现在内核中设有缓冲区高速缓存或页面高速缓存 大多数磁盘I O都通过缓冲进行 当将数据写入文件时 内核通常先将该数据复制到其中一个缓冲区中 如果该缓冲区尚未写满 则并不将其排入输出队列 而是等待其写满或者当内核需要重用
  • 第七课,OpenGL之LookAt函数

    观察空间 通过给定摄像机位置 摄像机焦点 摄像机顶部分向量 可得到摄像机的固定位置 glm lookAt cameraPos cameraFocus cameraUp LookAt函数提供了这种计算 把这个LookAt矩阵作为观察矩阵可以很
  • 【C++】序

    1 数据类型 C 中有许多和C语言相似的数据类型 例如int char double 等等的数据类型 这些数据类型的使用和性质与C语言也大同小异 但在C 中也存在很多不同于C语言的数据类型 1 字符串类型 在C语言中 没有单独的字符串类型
  • 统计正数和负数的个数然后计算这些数的平均值)编写二个程序来读入不指定个数的整数,然后决定已经读取的整数中有多少个正数和多少个负数并计算这些输入值(不统计0)的总和,最终得出它们的平均值。这个程序以输入

    positives 0 negatives 0 sum 0 while True num int input Enter a number if num 0 break elif num gt 0 positives 1 正数个数 else
  • Java程序员必须要了解的七个开源协议介绍

    1 Mozilla Public License MPL License 允许免费重发布 免费修改 但要求修改后的代码版权归软件的倡议者 这种授权维护了商业软件的利益 它要求基于这种软件得修改无偿贡献 版权给该软件 这样 围绕该软件得所有代
  • c++ map 结构体作为key关键词

    c map 结构体作为key关键词 结构体的定义 这里的结构体是三个值 int x int y int label 当三个值作为 值时 你需要重新定义它的对比操作operator 这样才能对map进行查找操作 数据结构声明 并且对key的查