在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 的相关文章

  • 利用do while 循环和 switch 分支语句做一个简易的ATM机

    自己的写的过程体会 第一步 重要的 要检查你的电脑是否联网了 本人在写到第3步时没注意到电脑没联网 就一直在显示不了你想要的结果 本来信誓旦旦说没错啊 就是这样啊 可是就显示不了 后来才发现是网络问题 所以 网络很重要 一把泪 啊 然后呢
  • (ros/navigation/slam_gmapping) map_server地图服务器

    http wiki ros org map server 概述 map server提供map server ROS节点 它提供地图数据作为一个ROS服务器 也提供map saver命令行功能 能动态生成保存到文件中的地图 地图格式 包中通
  • 【深度学习】——如何提高map值

    目录 代码获取 map原理 map提高技巧 技巧总结 实战 1 效果不佳map55 55 1 单独调整get dr txt py中的self iou 0 3 2 单独调整get map py中的minoverlap 3 同时调整minove
  • reduce和map的区别

    1 reduce 上代码 from functools import reduce sum1 reduce lambda x y x y range 1 5 print sum1 10 输出结果 10 结论 reduce返回的是函数经过执行
  • leaftlet入门教程一

    1 实时输出坐标 监听 mousemove 事件 map on mousemove e gt let latlng e latlng console log latlng lat 30 59 lng 114 32 取消 mousemove
  • STL:map

    首先包含头文件 include
  • Java常用对象API——Map集合

    java util 接口 Map
  • C++ 中 map 容器的内存释放机制及内存碎片管理

    C 中 map 容器的内存释放机制及内存碎片管理 C 中的容器很好用 比如 vector map 等 可以动态扩容 自己管理内存 不用用户关心 但是在某些极端情况下 如果内存比较紧张的情况下 可能用户对于这些容器自己的管理规则 主要是释放规
  • Java分支语句

    一 键盘输入数据 1 导入java util Scanner包 语句import java util Scanner 这句话要放在class定义的上面 2 创建对象 语句 Scanner sc new Scanner System in 3
  • vue-cli3.0引入高德地图3d效果两种方法+实例+填坑

    前言 因为项目需要引入高德地图的3d效果 找了很多资料 在这里记录下方法和实例组件 注意 因为两个方法代码量都特别大 这里分2个页面详细说一下 方法一是链接出去专门说 最下面有更多资料 高德3d官网地址和别的资料地址 方法一 使用官方案例
  • Python 的 map、列表推导、循环效率比较

    话不多说 直接上代码 1 准备数据 三个列表 import time x x1 x2 for i in range 1000000 x append i x1 append i x2 append i 2 开始表演 2 1 for循环 st
  • 详解map、set、multimap、multiset的使用

    作者 阿润菜菜 专栏 C 目录 前言 set multiset的使用 1 set 2 multiset 3 什么时候应该使用multiset而不是set map multimap的使用 1 map 2 multimap 3 什么时候应该使用
  • C++ lambda自定义map,set,vector,list 排序规则

    Map和Set本质红黑二叉树 插入数据时可以自定义比较算法 list和vector链表插入时无需比较 所以一般全部插入完成后调用sort 核心代码 typedef struct MyStudent std string name int g
  • 微信小程序开发——map地图组件,定位,并手动修改位置偏差。

    环境搭建 注册 获取APPID 没有这个不能真鸡调试 下载微信web开发者工具 挺多bug 将就用 打开微信web开发者工具 扫码登录 新建小程序 输入APPID 勾选创建quick start项目 工程结构 可以看到工程根目录中有个app
  • 理解目标检测当中的mAP

    我们在评价一个目标检测算法的 好坏 程度的时候 往往采用的是pascal voc 2012的评价标准mAP 网上一些资料博客参差不齐 缺乏直观易懂的正确说明 希望这篇博文能够给大家一点帮助 mAP历史 目标检测的mAP计算方式在2010年的
  • 【数据结构】Map 映射

    数据结构源码 接口 public interface Map
  • openLayers画椭圆

    前言 OpenLayers可以通过代码绘制多种几何形状 也可以通过draw类型的交互组件绘制几何形状 官方实例提供了类如圆 折线 矩形 星形等方法 除此之外 椭圆这种图形其实也是非常常见的几何图形 但是官方没有提供现成的API 本文从使用代
  • 【学习笔记之操作系统原理篇】进程管理

    进程的概念 进程 单道程序 特点 顺序性 封闭性 独占性 可再现性 多道程序系统 特点 间断性 相互制约竞争资源 失去封闭性 共性资源 多个程序操作相同资源 不可再现性 运行结果不唯一 因为执行顺序不唯一 进程特征 动态性 一个进程可以对应
  • Babelfish【map函数】

    题目链接 这道题用哈希可以做 但是这道题的输入要求太过于繁琐 所以我直接上map稍微好弄些 这道题讲真更多的考察的是字符串的输入问题 看下代码就会明白的 完整代码 include
  • Java实体类转Map、Map转实体类

    1 创建entity User java package com jeff entity public class User private String userName private String password private I

随机推荐