功能类似如下描述:
if n==23 , 调用void fun1(void);
if n==33 , 调用void fun2(void );
if n==57 , 调用void fun3(void );
if n==246 , 调用void fun4(void );
if n==132 , 调用void fun5(void );
待实现如下函数:(5个fun函数已知,n 一定为{23,33,57,246,132}中的一个)
void Test(int n)
{
...
}
我想到了map<int,pFun>应该可以解决,大家还有其他方法吗?
让我想到多年前写的一个例程,思路和你的差不多,只不过没有使用map(事实上数据量小的时候不用map性能反而好):
原文:http://blog.csdn.net/cashey1991/article/details/8333954
想完成一个图灵完备的结构的话,你应该使用责任链模式:
我就说一个山寨算法吧,绝不用if,else,while....哈哈
(n == 23 && func1())
|| (n == 33 && fun2())
|| (n == 57 && fun3())
|| (n == 246 && fun4())
|| (n == 132 && func5());
利用&&和|| 的短路求值特性来实现if,else
typedef void (*pfunc)(void);
pfunc arrfunc[16];
arrfunc[1]=func1;
arrfunc[2]=func2;
arrfunc[3]=func3;
arrfunc[8]=func5;
arrfunc[15]=func4;
(arrfunc[n/16])();
我首先想到的是goto...
c++11的话,可以使用function代替函数指针;
帮不到大家,已删