#include<iostream>
#include<functional>
#include<string>
#include<map>
using namespace std;
int add(int a,int b){
return a+b;
}
struct divide{
int operator()(int a,int b){
return a/b;
}
};
int main(){
auto mod=[](const int&a,const int&b){return a%b;};
map<string,function<int(int ,int)>>calculate;//map<string,(int*)(int,int)>仅仅适用于函数指针
calculate["+"]=add;//函数指针
calculate["/"]=divide();//函数对象
calculate["*"]=[](const int& a,const int& b){return a*b;};//lamda
calculate["-"]=minus<int>();//标准库函数对象
calculate["%"]=mod;
int a=7,b=2;
cout<<calculate["+"](a,b)<<endl
<<calculate["/"](a,b)<<endl
<<calculate["*"](a,b)<<endl
<<calculate["-"](a,b)<<endl
<<calculate["%"](a,b)<<endl;
system("pause");
}
标准库function类型的小例子
最新推荐文章于 2022-03-09 12:25:13 发布