函数表(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";

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

代码如下:

[cpp]  view plain  copy
  1. /* 
  2.  * CppPrimer.cpp 
  3.  * 
  4.  *  Created on: 2013.11.11 
  5.  *      Author: Caroline 
  6.  */  
  7.   
  8. /*eclipse cdt*/  
  9.   
  10. #include   
  11. #include   
  12. #include   
  13. #include   
  14.   
  15. using namespace std;  
  16.   
  17. int add (int i, int j) { return i+j; }  
  18. auto mod = [](int i, int j) { return i%j; };  
  19. struct divide {  
  20.     int operator() (int denominator, int divisor) {  
  21.         return denominator / divisor;  
  22.     }  
  23. };  
  24.   
  25. int main (void) {  
  26.   
  27.     std::mapint (intint)> > binops = {  
  28.             {"+", add},  
  29.             {"-", std::minus<int>()},  
  30.             {"/", divide()},  
  31.             {"*", [](int i, int j) { return i*j; }},  
  32.             {"%", mod}  
  33.     };  
  34.   
  35.     std::cout << "10 + 5 = " <<  binops["+"] (10, 5) << std::endl;  
  36.     std::cout << "10 - 5 = " <<  binops["-"] (10, 5) << std::endl;  
  37.     std::cout << "10 / 5 = " <<  binops["/"] (10, 5) << std::endl;  
  38.     std::cout << "10 * 5 = " <<  binops["*"] (10, 5) << std::endl;  
  39.     std::cout << "10 % 5 = " <<  binops["%"] (10, 5) << std::endl;  
  40.   
  41.     return 0;  
  42.   
  43. }  

你可能感兴趣的:(C++进阶)