当前位置: 首页 > news >正文

C++ 表驱动方法代替if-else

连着用几十个if-else代码,运行效率不高,关键还手累,记得改成表驱动方法

#include <iostream>
#include <unordered_map>
#include <functional>using namespace std;void handleCondition1()
{// 处理条件 1 的代码std::cout << "Handling condition 1." << std::endl;
}void handleCondition2()
{// 处理条件 2 的代码std::cout << "Handling condition 2." << std::endl;
}void handleCondition3()
{// 处理条件 3 的代码std::cout << "Handling condition 3." << std::endl;
}int main()
{std::unordered_map<std::string, std::function<void()>> conditionTable;// 将条件和相应的处理函数添加到映射表中conditionTable["condition1"] = handleCondition1;conditionTable["condition2"] = handleCondition2;conditionTable["condition3"] = handleCondition3;std::string condition = "condition2"; // 假设条件为 "condition2"// 根据给定的条件查找并调用相应的处理函数if (conditionTable.find(condition) != conditionTable.end()){conditionTable[condition](); // 调用相应的处理函数}else{// 如果条件不在映射表中的处理代码std::cout << "No matching handler for condition:"<< condition.c_str() << std::endl;}return 0;
}

在上面的示例中,我们使用了 std::unordered_map 来创建条件和处理函数之间的映射表。键的类型是 std::string,值的类型是 std::function<void()>,它是一个可调用对象的封装,对应于无参数且返回类型为 void 的函数。

我将条件作为键,将相应的处理函数作为值添加到映射表中。然后,我们通过查找映射表来判断给定的条件是否存在,并调用相应的处理函数。如果条件不在映射表中,则执行相应的处理代码。

请注意,此示例仅演示了基本的表驱动方法的实现。根据实际需求,您可能需要进行适当的错误处理或对表驱动方法进行更复杂的设计。


推荐一个零声学院项目课,个人觉得老师讲得不错,分享给大家:
零声白金学习卡(含基础架构/高性能存储/golang云原生/音视频/Linux内核)
https://xxetb.xet.tech/s/VsFMs

http://www.lryc.cn/news/160246.html

相关文章:

  • 2023国赛数学建模E题思路分析 - 黄河水沙监测数据分析
  • cadence后仿真/寄生参数提取/解决pin口提取不全的问题
  • Vue中实现3D得球自动旋转
  • 使用wkhtmltoimage实现生成长图分享
  • 新风机未来什么样?
  • python的几种数据类型的花样玩法(一)
  • python回调函数之获取jenkins构建结果
  • Docker底层实现
  • PY32F003F18之RS485通讯
  • 概率论与数理统计学习笔记(7)——全概率公式与贝叶斯公式
  • 深入了解 Axios 的 put 请求:使用技巧与最佳实践
  • 浅谈Http协议、TCP协议(转载)
  • flatten-maven-plugin使用
  • Vue3中快速简单使用CKEditor 5富文本编辑器
  • qt简易网络聊天室 数据库的练习
  • Navicat连接mysql8.0:提示无法加载身份验证插件“caching_sha2_password”
  • 手写签名到背景上合为1张图
  • 华为认证系统学习大纲及课程
  • 某米ax3000路由器组网解析
  • 【leetcode 力扣刷题】数学题之除法:哈希表解决商的循环节➕快速乘求解商
  • Union类型和集合的union()方法-set.union()
  • 简明SQL别名指南:掌握AS实现列名更名
  • 基于量子密钥分发和区块链技术的新一代加密通信系统
  • 网络安全-子域名收集
  • go-zero jwt 鉴权快速实战
  • 9.8day58 单调栈
  • 快速完成工信部APP备案流程_以阿里云APP备案为例
  • uniapp中UView中 u-form表单在v-for循环下如何进行表单校验
  • 工作新时代,腾讯轻联塑造高效办公未来
  • JavaScript实现广告倒计时和跳过广告