表驱动概述<二>
2012-03-18 14:01
155 查看
上面讲到了访问自己构建的表的三种方法:
1.直接访问
2.索引访问
3.阶梯访问
这三种方法涵盖了实际使用表驱动的大部分方法,继续以举例的方式说明:
1.直接访问
上一篇文章中举的例子可以直接的访问表,而在实际情况中,往往需要构造查询健值。
保险行业的投保费用一般按照年龄段来区分,假如以5年一个标准,0~5岁按照一个基准费用的1.5倍收取,5~10岁。。。。人的年龄取值范围一般在0~150岁,如果构建一个150条记录的静态表显的有些愚蠢,事实上每个年龄主需要存在一个表项即可。
使用函数 CalAge()的结果直接访问表即可。
2.索引访问
索引访问是通过索引访问键值,再通过键值直接访问构造表。索引访问适合于表有大量的空洞,并且表的键值毫无规律的情况下使用。
3.阶段访问
当我们无法简单使用构造键值的方法,直接访问表时,可以使用阶段访问。
仍旧是举例说明,大学一般按照绩点评定学生成绩,一般的绩点转换表为:
>=95 4
>=90 3.5
>=80 3
>=70 2.5
>=60 2
<60 0
这样的情况很适合使用阶段访问表
阶段访问与上面保险费用有些相似,取值都是阶段性的,但是成绩点数阶段性不规律,所以无法使用函数直接转换为键值直接访问表。
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; }
阶段访问与上面保险费用有些相似,取值都是阶段性的,但是成绩点数阶段性不规律,所以无法使用函数直接转换为键值直接访问表。
相关文章推荐
- 表驱动概述<一>
- 黑马程序员 java概述与基础知识<二>
- C++封装SQLite实例<二>
- Hadoop学习<二>--HDFS文件系统操作方式
- Android学习笔记:<二>03.Android当中的常用控件
- VC与Matlab混合编程之调用动态链接库dll<二>
- Java基础<二>--->关键字、数据类型、运算
- 黑马程序员 Java基础<二>---> 继承、内部类与多态,包
- Android开发工具——ADB(Android Debug Bridge) <二>HOST端
- 程序员_Java初级<二> 关键字、标识符、运算符、进制
- 用compass快速给你的网站添加搜索功能<二>
- 黑马程序员 JAVA基础<二> 面向对象之封装 继承 多态
- JavaScript导出table数据到Excel<二>
- windbg 使用指南<二>
- platform s3c2440_led 驱动代码简要分析<1>
- 【吐槽篇之经验<二>】SSH架构性能优化经验总结
- Cocos2d入门 <二> 添加一个精灵
- 《20几岁要应用的经济学智慧》经济知识<二>
- JNI方法调用C++类库 <二>
- linux内存模型之bootmem分配器<二>