C/C++中switch用法的一种替换方式
生活随笔
收集整理的這篇文章主要介紹了
C/C++中switch用法的一种替换方式
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在C/C++中,switch語句是經常被用到的,當switch內的case語句較多時程序有時顯得比較繁亂,此種情況下可以用另外一種實現方式替代switch。詳細用法見例子:
#include "stdafx.h"float AddFunc(float a, float b)
{return (a + b);
}float SubFunc(float a, float b)
{return (a - b);
}float MultiplyFunc(float a, float b)
{return (a * b);
}float DivisionFunc(float a, float b)
{return (a / b);
}void Fun1(float a, float b, int flag, float &result)
{switch (flag){case 0:result = AddFunc(a, b);break;case 1:result = SubFunc(a, b);break;case 2:result = MultiplyFunc(a, b);break;case 3:result = DivisionFunc(a, b);break;}
}//若函數無參數,且返回值為空,則應該這樣定義:
//typedef void (*BasicOperationsFunc)();
typedef float (*BasicOperationsFunc)(float a, float b);
BasicOperationsFunc g_BasicOperationsFunc[] = {&AddFunc,&SubFunc,&MultiplyFunc,&DivisionFunc
};void Fun2(float a, float b, int flag, float &result)
{BasicOperationsFunc basicOperationFunc = g_BasicOperationsFunc[flag];if (!basicOperationFunc) return;result = basicOperationFunc(a, b);
}int _tmain(int argc, _TCHAR* argv[])
{float a = 10, b = 2;float result1 = 0, result2 = 0;int flag = 1;Fun1(a, b, flag, result1);Fun2(a, b, flag, result2);return 0;
}
首先聲明一個BasicOperationsFunc,然后定義一個BasicOperationsFunc類型的數組,這樣在Fun2函數中就可以不用switch,而直接通過basicOperationFunc來調用相應的函數即可。如果在case條件比較多的情況下,這是一種不錯的替代方法。
還有其它推薦的方法嗎?
總結
以上是生活随笔為你收集整理的C/C++中switch用法的一种替换方式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SSE2 Intrinsics各函数介绍
- 下一篇: Windows7下OpenGL简单使用举