C++ - 函数表(function table) 和 函数(function)容器 的 用法

函数表(function table) 和 函数(function)容器 的 用法

 

本文地址: http://blog.csdn.net/caroline_wendy/article/details/15416015 

 

函数表(function table),是函数映射的表, 最简单的方法是使用"map<>"容器, 映射"std::string"和"function<>"容器;

函数容器的类型是 调用签名(call signature), 如 "std::function<int (int, int)>";

可以存储, 函数, Lambda表达式, 函数对象类(function-object class), 标准库的函数对象等.

代码如下:

/*
 * CppPrimer.cpp
 *
 *  Created on: 2013.11.11
 *      Author: Caroline
 */

/*eclipse cdt*/

#include <iostream>
#include <functional>
#include <map>
#include <string>

using namespace std;

int add (int i, int j) { return i+j; }
auto mod = [](int i, int j) { return i%j; };
struct divide {
	int operator() (int denominator, int divisor) {
		return denominator / divisor;
	}
};

int main (void) {

	std::map<std::string, std::function<int (int, int)> > binops = {
			{"+", add},
			{"-", std::minus<int>()},
			{"/", divide()},
			{"*", [](int i, int j) { return i*j; }},
			{"%", mod}
	};

	std::cout << "10 + 5 = " <<  binops["+"] (10, 5) << std::endl;
	std::cout << "10 - 5 = " <<  binops["-"] (10, 5) << std::endl;
	std::cout << "10 / 5 = " <<  binops["/"] (10, 5) << std::endl;
	std::cout << "10 * 5 = " <<  binops["*"] (10, 5) << std::endl;
	std::cout << "10 % 5 = " <<  binops["%"] (10, 5) << std::endl;

	return 0;

}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ElminsterAumar

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值