c++ 范型算法与函数对象 初认识


    一个很简单的缘由:stl::vector 怎么做加法。使用函数对象  

   函数对象的作用: 范型算法的实现独立于容器类型,它消除了算法对类型的依赖,另一方面,当一个算法作用于一个具体的容器,如何建立联系? <--- 使用 函数对象

   通常,函数对象仅有一个成员函数,该函数重载函数调用操作符( operator() ), 函数对象作为实参传递给范型算法。

   

  2 #include <assert.h>

  3 #include <numeric>

  4 using namespace std;

  5 

  6 #include "Vector.h"

  7 class MinusClass

  8 {

  9         public:

 10                 Vector2f operator() (Vector2f p1, Vector2f p2) const {return p1-p2;};

 11 };

 12 

 29         vector<Vector2f> NextPos (PositionVector.begin()+1, PositionVector.end());

 30         vector<Vector2f> LastPos (PositionVector.begin(),PositionVector.end()-1);

 31 

 32         assert(NextPos.size()==Num+1);

 33         assert(LastPos.size()==Num+1);

 34 

 35         vector<Vector2f> DeltaPos;

 36         transform(LastPos.begin(), LastPos.end(), NextPos.begin(), DeltaPos.begin(), MinusClass());

 37 

 38         for(vector<Vector2f>::iterator iter=DeltaPos.begin(); iter != DeltaPos.end(); iter++)

 39         {

 40                 float slope = (iter->z)/(iter->x);

 41                 bg_tang.push_back(normalize(Vector2f(1,slope)));

 42                 bg_normal.push_back(normalize(Vector2f(-slope,1)));

 43         }



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值