博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
表驱动
阅读量:6376 次
发布时间:2019-06-23

本文共 1247 字,大约阅读时间需要 4 分钟。

  表驱动,又称之为表驱动法、表驱动方法。

  “表”是几乎所有数据结构课本都要讨论的非常有用的数据结构。表驱动方法出于特定的目的来使用表,程序员们经常谈到“表驱动”方法,但是课本中却从未提到过什么是"表驱动"方法。表驱动方法是一种使你可以在表中查找信息,而不必用很多的逻辑语句(if或Case)来把它们找出来的方法。事实上,任何信息都可以通过表来挑选。在简单的情况下,逻辑语句往往更简单而且更直接。但随着逻辑链的复杂,表就变得越来越富有吸引力了,通过下面的这个例子大家就能知道什么是所谓的表驱动方法了。

  假设你需要一个可以返回每个月中天数的函数(为简单起见不考虑闰年),

  一个比较笨的方法是一个大的if语句:

int iGetMonthDays(int iMonth){    int iDays;    if(1 == iMonth) {iDays = 31;}    else if(2 == iMonth) {iDays = 28;}    else if(3 == iMonth) {iDays = 31;}    else if(4 == iMonth) {iDays = 30;}    else if(5 == iMonth) {iDays = 31;}    else if(6 == iMonth) {iDays = 30;}    else if(7 == iMonth) {iDays = 31;}    else if(8 == iMonth) {iDays = 31;}    else if(9 == iMonth) {iDays = 30;}    else if(10 == iMonth) {iDays = 31;}    else if(11 == iMonth) {iDays = 30;}    else if(12 == iMonth) {iDays = 31;}    return iDays;}

  可以看出本来应该很简单的一件事情,代码却是这么冗余,解决这个的办法就可以用表驱动方法。

  static int aiMonthDays[12] = {31,28,31,30,31,30,31,31,30,31,30,31};
  // 我们可以先定义一个静态数组,这个数组用来保存一年十二个月的天数

int iGetMonthDays(int iMonth){    return aiMonthDays[(iMonth - 1)];}

接下来不用多说了,大家都能看出用这种表驱动的方法代替这种情逻辑性不强,但分支很多的代码是多么令人"赏心悦目"的了。

函数:

  函数指针在表驱动方法中的应用
  在使用表驱动方法时需要说明的一个问题是,你将在表中存储些什么。
  在某些情况下,表查寻的结果是数据。如果是这种情况,你可以把数据存储在表中。
  在其它情况下,表查寻的结果是动作。在这种情况下,你可以把描述这一动作的代码存储在表中。

转载地址:http://mwtqa.baihongyu.com/

你可能感兴趣的文章
springboot传入json和文件_SpringBoot系列教程22-整合SpringMVC之HttpMessageConverters
查看>>
不礼让行人怎么抓拍的_张家川公安交警持续曝光机动车不礼让行人【第24期】...
查看>>
用pythonturtle写名字_去年爆款新生儿名字,家长自以为起的不错,却有“棺材”的意思...
查看>>
句子分类_语法微课句子的分类+文本讲解
查看>>
显示提示_体检报告显示:“转氨酶”升高!提示身体可能出现了这些健康问题...
查看>>
图形化分析工具_推荐一款基于小米 soar 的开源 sql 分析与优化的 web 图形化工具...
查看>>
485 工控机 接线方式_RS485温湿度传感器的接线方式及注意事项
查看>>
12306排队是什么意思_12306订单请求排队中是什么意思 要等多久
查看>>
u3d游戏开发视频潭州_unity3d教程视频-unity3d教程中文零基础入门/u3d游戏开发/特效案例/项目实战V2.0 最新版 - 极光站...
查看>>
c++区块链实例_cpp 区块链模拟示例(二)工程代码解析
查看>>
hourglass论文_论文笔记 Stacked Hourglass Networks for Human Pose Estimation
查看>>
java 接口的本质_Java基本概念:接口
查看>>
java死锁的解决_java中常见的死锁以及解决方法代码
查看>>
java菜单栏不下拉_我java代码中的下拉列表设好后为什么无法下拉?
查看>>
java传递引用类型的实质_java的引用类型以及值传递
查看>>
java策略模式使用场景,Java设计模式—策略模式
查看>>
RHEL6.3实现基于加密的用户认证验证访问
查看>>
SCCM2012 R2实战系列之十一:解决OSD分发Windows7 系统盘盘符为’D’问题
查看>>
经验分享:我是如何在网店无货源情况下快速出单?
查看>>
当AD服务器置于防火墙内时,所需开放的端口
查看>>