根据需求的不同 选择不同的策略算法

之前是保存的各种策略类的指针

这里直接使用 function  bind 选择对应的算法

代码

// 005.cpp: 定义控制台应用程序的入口点。
// #include "stdafx.h"
#include <functional>
#include <iostream> using namespace std; int MyAdd(int a, int b) { return a + b; } class MyMinus {
public:
int operator()(int a, int b) {
return a - b;
}
}; class binary_operators {
public:
typedef std::function<int(int, int)> FUNC;
binary_operators(FUNC f,int a, int b) :func_(f),left(a), right(b),result() {}
int GetResult() { return func_(left, right); }
private:
std::function<int(int, int)> func_;
int left;
int right;
int result;
}; int main()
{
binary_operators addOperation(std::function<int(int, int)>(MyAdd),,);
binary_operators minusOperation(std::function<int(int, int)>(MyMinus()), , ); std::cout << "addOperation(1,2) result: " << addOperation.GetResult() << std::endl;
std::cout << "minusOperation(5,7) result: " << minusOperation.GetResult() << std::endl;
return ;
}

最新文章

  1. .net 刷新页面防止表单二次提交
  2. Android基础总结(二)
  3. angularJS 2.0 开发的简单dome
  4. 5种IO模型
  5. 使用https时,网站一些内容不能正常显示的问题
  6. 关于搭建haddoop分布式系统的全部过程复习
  7. 电脑突然死机,系统日志记录事件ID=6008
  8. C#嵌套类型
  9. jQuery插件综合应用(三)发布文章页面
  10. delphi算法
  11. Thinkphp3.2———配置模块
  12. C#更改操作系统时间
  13. table中的一些另类标签
  14. 高速排序,归并排序,堆排序python实现
  15. 【JDK】JDK模块化(1)-为什么要模块化
  16. PMS构造函数以及apk如何扫描
  17. 最少步数(bfs)
  18. 使用padding值控制控件的隐藏与显示
  19. 使用vue脚手架(vue-cli)快速搭建项目
  20. 一个页面从输入 URL 到页面加载显示完成,这个过程中都发生了什么?

热门文章

  1. AsyncTask(异步任务)
  2. CSS之checkbox&amp;radio&amp;textarea&amp;select
  3. 输入框UITextField禁止输入空格方法
  4. 从Tomcat的处理web请求分析Java的内存模型
  5. GraphicsMagick命令
  6. struts设置开发者模式
  7. jenkins-1
  8. 【JVM底层策略 一】GC roots如何判断对象不可达
  9. 文件上传:swfupload.js、blueimp-file-upload
  10. java网络编程-单线程服务端与客户端通信