在C++中使用map来取代很多个if else和switch

2023-05-16

在C++中使用map来取代很多个if else和switch

利用map中的key和value键值对来取代if else效率会好不少。

#include <iostream>
#include <map>
#include <functional>

using namespace std;

int fun1(int a,int b){ return  a + b;}
int fun2(int a,int b){ return  a - b;}
int fun3(int a,int b){ return  a * b;}
int fun4(int a,int b){ return  a / b;}

int main() {
    map<int,function<int(int,int)>> m_fun;
    /**相当于:
    if(key == 1){ fun1(6, 3);}
    if(key == 2){ fun1(6, 3);}
    if(key == 3){ fun1(6, 3);}
    if(key == 4){ fun1(6, 3);}
    **/
    m_fun.insert(make_pair(1,fun1));
    m_fun.insert(make_pair(2,fun2));
    m_fun.insert(make_pair(3,fun3));
    m_fun.insert(make_pair(4,fun4));
    int a[4] = {1,2,3,4};
    for(auto x : a)
    {
        cout<<m_fun[x](6,3)<<endl;
    }
    std::cout << "Hello, World!" << std::endl;
    return 0;
}

第一次听说map的键值对用来替换很多if else和switch判断的时候,我很懵逼,map居然能和if else扯上关系????

去了解一下一下,好像在Java后端开发中,比如根据不同的抽奖卷去查询不同的数据库,抽奖卷类型很多,如果用if else来写,程序就会很长。

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

在C++中使用map来取代很多个if else和switch 的相关文章

  • 用switch语句实现简单的取款机程序

    大家好 今天给大家分享一个简单的取款机程序 相关函数 switch语句 分支语句 case语句 分支条件 break语句 结束循环 default语句 其他分支 演示效果 试试存款 存款成功 再试试取款 取款也成功 代码部分 源文件名 ma
  • vue-cli3.0引入高德3d动画效果方法一:

    前言 因为两个方法代码量都特别大 这里分2个页面详细说一下 这个页面是方法一 包括vue cli3 0中使用和html中使用两种示例 注意 这里有想看另一种方法的童鞋请点入口 https blog csdn net qq 41619796
  • Java:Map转List (用stream实现)

    例子 Map
  • 【深度学习】——如何提高map值

    目录 代码获取 map原理 map提高技巧 技巧总结 实战 1 效果不佳map55 55 1 单独调整get dr txt py中的self iou 0 3 2 单独调整get map py中的minoverlap 3 同时调整minove
  • 安卓混合开发,使用WebView控件展示网页

    页面使用webview控件来实现 WebView是Android系统提供能显示网页的系统控件 它是一个特殊的View 他的作用就是 显示和渲染Web页面 加载网络上或本地assets中的html文件 与JavaScript交互调用 常用于同
  • 蓝桥杯VIP算法训练-轨道炮-看完秒懂的(c++map)

    题目描述 小明在玩一款战争游戏 地图上一共有 N 个敌方单位 可以看作 2D 平面上的点 其中第 i 个单位在 0 时刻的位置是 Xi Yi 方向是 Di 上下左右之一 用 U D L R 表示 速度是 Vi 小明的武器是轨道炮 只能使用一
  • JavaScript学习笔记(11) map、reduce

    map map 方法定义在JavaScript的Array中 调用Array的map 方法 传入我们自己的函数 就可以得到结果 来一个例子 use strict function pow x return x x var arr 1 2 3
  • mybatis中使用map批量更新

    最近项目中会用到批量更新功能 数据是存在map中的 key作为更新的id 而value作为更新的值 纠结了很久最后算是解决了 特此记录 希望对有需要的有一定帮助
  • Java分支语句

    一 键盘输入数据 1 导入java util Scanner包 语句import java util Scanner 这句话要放在class定义的上面 2 创建对象 语句 Scanner sc new Scanner System in 3
  • vue中使用mapboxgl 加载天地图初始化并打点marker以及逆地理编码

    1 首先这个是中文文档地址开发文档 Mapbox 2 先注册一个token 具体文档流程 这边不过多介绍 3 下载npm install mapbox gl save 4 不多说 直接上代码 HTML中先创建一个盒子有宽高 id 还有记得引
  • tensorRT模型性能测试

    目录 前言 1 模型训练 1 1 模型 1 2 数据集 1 3 xml2yolo 1 4 yolo2json 1 5 json2yolo 1 6 训练 2 TRT模型转换 2 1 YOLOv5 ONNX导出 2 2 YOLOv6 ONNX导
  • 每日一题:简单分数统计

    简单分数统计 题目 Daimayuan Online Judge 发现样例输出的是id和成绩 那么就写一个包含这两个变量的结构体来储存它们 另外 再写一个结构体来储存题目名称和分数 目的是使两者联系起来 找到题目名称就能知道对应的分数 AC
  • LinkedHashMap常用方法源码

    类介绍 注释 add contains remove 方法 时间复杂度是O 1 LinkedHashMap的遍历耗时 与 capacity无关 与map的size 元素多少 呈线性 HashMap的遍历 可能比 LinkedHashMap更
  • LinkedHashMap和LinkedHashSet 转来记录

    LinkedHashMap和LinkedHashSet是JDK 1 4中引入的两个新的集合类 虽然已经过去 年了 但我敢打赌并不是很多人都用过 因为我就没有用过 但这两个类在某些情况下还是非常有用的 过去没有用 现在没有用 都没有关系 但还
  • Android开发中关于“invalid symbol”的错误

    Android开发中 有时会提示关于 invalid symbol 这个的错误 比如 error invalid symbol switch 代码如下
  • [python] 下载天地图切片地图

    下载xyz地图 资源 下列为常用xyz路由地址 为了避免图片中出现文字标注 道路名称 建筑物名称等 本文选择天地图tian vec 作为获取资源对象 var mapUrl 高德地图 lang可以通过zh cn设置中文 en设置英文 size
  • Switch / Xbox / PS / PSV / PSP 游戏指南

    1 Switch Xbox PS PSV PSP 对比分析 table 1 PSV2000 1000 比较分析 PSV2000 相对 PSV1000 具体变更点 薄了20 轻了15 屏幕改为液晶屏 PS键 开始键和选择键变成球形更方便按 内
  • 最小外接矩形思路以及实现

    最小外接矩形 外接矩形计算 对一个凸多边形进行外接矩形计算 需要知道当前面的最大xy 和最小xy值 即可获得外接矩形 最小外接矩形计算 对凸多边形的每一条边都绘制一个外接矩形求最小面积 下图展示了计算流程 计算流程 旋转基础算法实现 旋转点
  • C++中 Map的了解与基本用法(代码演示+自我总结+map中一对多的用法)

    C 中 map的了解与基本用法 代码演示 一 map的基本认识 Map是STL的一个关联容器 它提供一对一 其中第一个可以称为关键字 每个关键字只能在map中出现一次 第二个可能称为该关键字的值 的数据处理能力 由于这个特性 它完成有可能在
  • Python常用函数笔记汇总1

    清理 重塑 转换 numpy where condition x y 1 这里x y是可选参数 condition是条件 这三个输入参数都是array like的形式 而且三者的维度相同 2 当conditon的某个位置的为true时 输出

随机推荐