STL中的函数对象实现负数的定义
//
// 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>?
STL中的函数对象实现负数的定义的更多相关文章
- 3.2 STL中的函数对象类模板
*: STL中有一些函数对象类模板,如下所示: 1)例如要求两个double类型的x 和y 的积,可以: multiplies<double>()(x,y); 该表达式的值就是x*y的值. ...
- STL算法设计理念 - 函数对象和函数对象当参数和返回值
函数对象: 重载函数调用操作符的类,其对象常称为函数对象(function object),即它们是行为类似函数的对象.一个类对象,表现出一个函数的特征,就是通过"对象名+(参数列表)&qu ...
- STL算法设计理念 - 函数对象和函数对象当參数和返回值
函数对象: 重载函数调用操作符的类.其对象常称为函数对象(function object),即它们是行为类似函数的对象. 一个类对象,表现出一个函数的特征,就是通过"对象名+(參数列表)&q ...
- Java中的函数对象
初次听说java中的函数对象可能,比较的陌生.可以类比着来理解一下,人们常说java中没有了指针,殊不知,java中的对象引用就是指针,有时候我们说一个对象往往指的就是这个对象的引用,也就是说基本上把 ...
- STL——仿函数(函数对象)
一.仿函数(也叫函数对象)概观 仿函数的作用主要在哪里?从第6章可以看出,STL所提供的各种算法,往往有两个版本,其中一个版本表现出最常用(或最直观)的某种运算,第二个版本则表现出最泛化的演算流程,允 ...
- 『嗨威说』算法设计与分析 - STL中Sort函数的实现原理初探
本文索引目录: 一.对Sort算法实现的个人阅读体会 二.Sort算法使用的三个排序算法的优点介绍 2.1 插入排序的优缺点 2.2 堆排序的优缺点 2.3 快速排序的优缺点 2.4 新的结合排序—— ...
- STL 仿函数(函数对象)
##定义 仿函数(functor):一种具有函数性质的对象. 仿函数在C++中的新名称为函数对象(function object). 仿函数类对象像函数一样被调用,调用仿函数类对象时,实际调用的是仿函 ...
- C++模板中的函数对象
在C++模板类map中一个参数为Compare类型,该类型为一个比较函数,其完整定义如下: template< class Key, class T, class Compare = std:: ...
- Python中的函数对象与闭包
函数在Python中是第一类对象,可以当做参数传递给其他函数,放在数据结构中,以及作为函数的返回结果. 下面的例子为接受另外一个函数作为输入并调用它 #foo.py def callf(func): ...
随机推荐
- maven仓库失效的情况下搭建maven项目
maven仓库失效的情况下搭建maven项目 1,在有maven仓库的情况下mvn clean package 2,整个项目拷贝到没有的环境下 3,ls |xargs -t -I a cp a/pom ...
- nginx基础模块
http://www.nginx.cn/doc/ 基础模块 HTTP Core模块* HTTP Upstream 模块 HTTP Access 模块 HTTP Auth Basic 模块 HTTP A ...
- GIS地理工具案例教程——批量合并影像
GIS地理工具案例教程——批量合并影像 商务合作,科技咨询,版权转让:向日葵,135—4855__4328,xiexiaokui#qq.com 描述:合并目录下的所有影像 功能:对指定工作空间下的栅格 ...
- ffmpeg-php扩展
php视频缩略图,较常用的是ffmpeg-php 1: 安装 ffmpeg ffmpeg的下载链接 http://ffmpeg.org/download.html 解压安装包 tar -jxvf f ...
- Leetcode: Capacity To Ship Packages Within D Days
A conveyor belt has packages that must be shipped from one port to another within D days. The i-th p ...
- angular ts处理日期格式
引入DatePipe import {DatePipe} from '@angular/common'; 添加provider @Component({ providers: [DatePipe] } ...
- python的url正则表达式
网上有很多的正则表达式版本,大部分都不好使,下面这个比较好用: http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\(\),]|(?:%[0-9a-fA-F] ...
- netty5服务端检测心跳超时断连
客户端每5秒发送一次心跳给服务端,服务端记录最后一次心跳时间,通过定时任务每10秒检测一下,如果当前时间与最后一次收到的心跳时间之差超过某个阈值,断开与客户端的连接.基于之前的例子(netty5心跳与 ...
- 【DataBase】Hsqldb的简单使用
介绍 HSQLDB是一个开放源代码的JAVA数据库,其具有标准的SQL语法和JAVA接口,它可以自由使用和分发,非常简洁和快速的.具有Server模式,每个程序需要不同的命令来运行. HyperSQL ...
- linux添加动态库路劲
修改这个文件/etc/ld.so.conf.d,最后加上so的绝对路径即可