gettogetto的博客

不积跬步无以至千里

标准库function类型的小例子

#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");
}

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/gettogetto/article/details/49950971
个人分类: C++
上一篇c++图像处理:24位真彩图颜色变换
下一篇Longest Increasing Subsequence
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭