表驱动概述<二>
来源:互联网 发布:潘多拉 网络共享 编辑:程序博客网 时间:2024/05/12 14:21
上面讲到了访问自己构建的表的三种方法:
1.直接访问
2.索引访问
3.阶梯访问
这三种方法涵盖了实际使用表驱动的大部分方法,继续以举例的方式说明:
1.直接访问
上一篇文章中举的例子可以直接的访问表,而在实际情况中,往往需要构造查询健值。
保险行业的投保费用一般按照年龄段来区分,假如以5年一个标准,0~5岁按照一个基准费用的1.5倍收取,5~10岁。。。。人的年龄取值范围一般在0~150岁,如果构建一个150条记录的静态表显的有些愚蠢,事实上每个年龄主需要存在一个表项即可。
typedef struct tagTInsuran{ int age; double rate;}TInsuran;double pay;TInsuran atInsuran[] = { 0,1.5*pay; 1,1.4*pay; ... 30,2*pay;}int CalAge(int age){ return age/5;}
使用函数 CalAge()的结果直接访问表即可。
2.索引访问
索引访问是通过索引访问键值,再通过键值直接访问构造表。索引访问适合于表有大量的空洞,并且表的键值毫无规律的情况下使用。
3.阶段访问
当我们无法简单使用构造键值的方法,直接访问表时,可以使用阶段访问。
仍旧是举例说明,大学一般按照绩点评定学生成绩,一般的绩点转换表为:
>=95 4
>=90 3.5
>=80 3
>=70 2.5
>=60 2
<60 0
这样的情况很适合使用阶段访问表
int score[] = {60,70,80,90,95,100};double point[] = {0,2,2.5,3,3.5,4};int CalPoint(int inScore){ double retPoint = 4; double loopPoint = 0; int i = 0; while(loopPoint<4) { if(inScore<score[i]) { retPoint = point[i]; break; } loopPoint = point[++i]; } return retPoint;}
阶段访问与上面保险费用有些相似,取值都是阶段性的,但是成绩点数阶段性不规律,所以无法使用函数直接转换为键值直接访问表。
- 表驱动概述<二>
- 表驱动概述<一>
- 概述(二)
- VxWorks串口驱动概述
- 串口驱动概述
- linux设备驱动概述
- linux设备驱动概述
- 设备驱动概述
- 设备驱动概述
- ALSA驱动概述
- Linux网络设备驱动概述
- linux设备驱动概述
- linux并口驱动概述
- Android系统驱动概述
- linux 设备驱动概述
- Linux驱动开发概述
- USB设备驱动概述
- linux驱动概述
- Android培训班(95)内核解压过程8
- Android-2.2display系统介绍-SW架构
- 3月18日复习提纲
- asp 无组件上传大文件
- Android2.2 display系统介绍
- 表驱动概述<二>
- C指针和数组:定义为字符串指针,声明为字符数组的后果
- awk 笔记之一
- 如何让老板舍不得你-献给即将工作的或者工作不久的人们
- hdu 1176免费馅饼 //dp
- 2012-3-18 @facebook
- 高性能Web服务器Nginx的配置与部署研究(5)Nginx配置符号
- 浅谈void及void指针
- 显示acpi当前的信息