在C++中使用map来取代很多个if else和switch
利用map中的key和value键值对来取代if else效率会好不少。
#include <iostream>
#include <map>
#include <functional>
using namespace std;
int fun1(int a,int b){ return a + b;}
int fun2(int a,int b){ return a - b;}
int fun3(int a,int b){ return a * b;}
int fun4(int a,int b){ return a / b;}
int main() {
map<int,function<int(int,int)>> m_fun;
/**相当于:
if(key == 1){ fun1(6, 3);}
if(key == 2){ fun1(6, 3);}
if(key == 3){ fun1(6, 3);}
if(key == 4){ fun1(6, 3);}
**/
m_fun.insert(make_pair(1,fun1));
m_fun.insert(make_pair(2,fun2));
m_fun.insert(make_pair(3,fun3));
m_fun.insert(make_pair(4,fun4));
int a[4] = {1,2,3,4};
for(auto x : a)
{
cout<<m_fun[x](6,3)<<endl;
}
std::cout << "Hello, World!" << std::endl;
return 0;
}
第一次听说map的键值对用来替换很多if else和switch判断的时候,我很懵逼,map居然能和if else扯上关系????
去了解一下一下,好像在Java后端开发中,比如根据不同的抽奖卷去查询不同的数据库,抽奖卷类型很多,如果用if else来写,程序就会很长。