功能类似如下描述:
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代替函式指標;
雷雷
雷雷
幫不到大家,已刪除