代码大全是的表驱动法关于税率的例子,用了VB的代码例子,但是C++没有这种多维的方便数组,于是用了map来表达,如下:
typedef enum gender
{
Man,
Woman
}Gender;
typedef enum marrialstatus
{
Single,
Married
}MaritalStatus;
typedef enum smokingstatus
{
Smoking,
NoSmoking
}SmokingStatus;
//表驱动法来代替多判断语句
//可通过赋值、读入数据等方式来进行表初始化
typedef std::map<Gender, std::map<MaritalStatus, std::map<SmokingStatus, double> > > RATETABLE;
static RATETABLE rateTable;
void InitRateTabel()
{
rateTable[Man][Single][Smoking] = 20.8;
rateTable[Man][Single][NoSmoking] = 18.2;
rateTable[Man][Married][Smoking] = 20.0;
//...初始化
}