您的位置:首页 > 编程语言 > C语言/C++

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

2014-11-09 09:16 183 查看
一个很简单的缘由: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
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐