STL中的函数对象实现负数的定义
程序员文章站
2022-06-10 19:58:43
``` // // main.cpp // STL中的函数对象 // // Created by mac on 2019/5/2. // Copyright © 2019年 mac. All rights reserved. // 1.是否支持模版继承? // 2.模版中存在多个参数? includ ......
// // main.cpp // stl中的函数对象 // // created by mac on 2019/5/2. // copyright © 2019年 mac. all rights reserved. // 1.是否支持模版继承? // 2.模版中存在多个参数? #include <iostream> #include <functional> using namespace std; /* stl在<functional>中为常见的c++运算符定义了函数对象。其中负号的定义为: template <class t> struct negate:public unary_function<t,t>{ t operator() (const t&x)const{ return -x; } }; */ //计算(n,m)之间的和 n+...+m template <class f> double sum(f f,int n,int m) { double result=0; for (int i=n; i<=m; i++) { //还有一种简写的方式 result+=f(i); result+=f.operator()(i);//规范写法 } return result; } int main(int argc, const char * argv[]) { // insert code here... cout<<sum(negate<double>(),2,5)<<endl; return 0; }
运行结果
-14 program ended with exit code: 0
tips
- 类模版是否支持继承?
- 代码中的struct跟c中的struct不是一回事
- sum函数中第一个参数,需要传入一个对象,你看代码中传入了个啥玩意?为什么这样写不会报错?
- 如何理解unary_function<t,t>?
上一篇: 如何预防鼠标手 试试穴位按摩方法