C++ 11 - STL - 函数对象(Function Object) (上)
1. 定义
在STL中,可以把函数传递给算法,也可以把函数对象传递给算法。
那么,什么是函数对象呢?
我们来看下它的声明:
class X
{
public:
// define function call operator
return-value operator() (arguments) const;
...
}
你可以这样调用:
X fo;
...
fo(arg1, arg2);
我们来看个简单的打印的例子
PrintInt.h
#ifndef Print_Int_H_
#define Print_Int_H_ #include <iostream>
using namespace std;
class PrintInt
{
public:
void operator() (int elem) const
{
cout << elem << ' ';
}
}; #endif
FuncObjectTest.h
#ifndef Stl_Alg_Func_Object_Test_H_
#define Stl_Alg_Func_Object_Test_H_ #include "../../TestBase.h" class FuncObjectTest : public TestBase
{
public:
FuncObjectTest(const string &c, const string &d) : TestBase(c, d) { }
void run();
private:
void printFuncObject();
}; #endif
FuncObjectTest.cpp
#include <vector>
#include <algorithm>
#include <iostream>
#include "FuncObjectTest.h"
#include "../../Core/PrintInt.h" using namespace std; void FuncObjectTest::printFuncObject()
{
vector<int> coll; // insert elements from 1 to 9
for (int i = ; i <= ; ++i) {
coll.push_back(i);
} // print all elements
for_each(coll.cbegin(), coll.cend(), // range
PrintInt()); // operation
cout << endl;
} void FuncObjectTest::run()
{
printStart("printFuncObject()");
printFuncObject();
printEnd("printFuncObject()");
}
运行结果:
---------------- printFuncObject(): Run Start ----------------
1 2 3 4 5 6 7 8 9
---------------- printFuncObject(): Run End ----------------
C++ 11 - STL - 函数对象(Function Object) (上)的更多相关文章
- C++ 11 - STL - 函数对象(Function Object) (下)
1. 预定义函数对象 C++标准库内含许多预定义的函数对象,也就是内置的函数对象. 你可以充分利用他们,不必自己费心去写一些自己的函数对象. 要使用他们,你只要包含如下头文件 #include < ...
- C++ 11 - STL - 函数对象(Function Object) (中)
我们再来看一个复杂的例子 需求: 我们需要对集合内每个元素加上一个特定的值 代码如下: AddInt.h class AddInt { private: int theValue; // the va ...
- PythonStudy——函数对象 Function object
# 在python中,所有变量存放的值只要是地址,我们就称之为对象# -- 所有的变量都是用来存放地址的,所以都是对象# -- 存放整型的地址就是整型对象 | 存放函数的地址就是函数对象 | 存放文件 ...
- C++11多态函数对象包装器
[C++11多态函数对象包装器] 针对函数对象的多态包装器(又称多态函数对象包装器)在语义和语法上和函数指针相似,但不像函数指针那么狭隘.只要能被调用,且其参数能与包装器兼容的都能以多态函数对象包装器 ...
- C++11新特性之八——函数对象function
详细请看<C++ Primer plus>(第六版中文版) http://www.cnblogs.com/lvpengms/archive/2011/02/21/1960078.html ...
- 条款20 STL函数对象
继承标准STL的函数对象 1: struct PopLess : public atd::binary_function<state,state,bool> 2: { 3: bool op ...
- C++STL 函数对象和谓词
函数对象:重载函数调用操作符的类,其对象常称为函数对象. 函数对象属于类对象,能突破函数概念,保持类的状态 谓词: 一元函数对象:函数参数1个: 二元函数对象:函数参数2个: 一元谓词 函数参数1个, ...
- Javascript中Function,Object,Prototypes,__proto__等概念详解
http://anykoro.sinaapp.com/2012/01/31/javascript%E4%B8%ADfunctionobjectprototypes__proto__%E7%AD%89% ...
- 认识js函数对象(Function Object)
认识函数对象(Function Object) 可以用function关键字定义一个函数,对于每个函数可以为其指定一个函数名,通过函 数名来进行调用.这些都是代码给用户的印象,而在JavaScript ...
随机推荐
- React Native 系列(七)
前言 本系列是基于React Native版本号0.44.3写的.几乎所有的App都使用了ListView这种组件,这篇文章将学习RN中ListView的平铺样式和分组样式. ListView平铺样式 ...
- RxSwift 系列(二)
前言 Subject是一个代理,它既是Observer,也是Observable.因为它是一个Observer,它可以订阅一个或多个Observable;因为它是一个Observable,它又可以被其 ...
- django配置Ueditor
1.安装DjangoUeditor pip install DjangoUeditor 2.在Django中安装DjangoUedito app,在INSTALL_APPS里面增加DjangoUedi ...
- [bzoj3625][Codeforces 250 E]The Child and Binary Tree(生成函数+多项式运算+FFT)
3625: [Codeforces Round #250]小朋友和二叉树 Time Limit: 40 Sec Memory Limit: 256 MBSubmit: 650 Solved: 28 ...
- [BZOJ3139][HNOI2013]比赛(搜索)
3139: [Hnoi2013]比赛 Time Limit: 20 Sec Memory Limit: 128 MBSubmit: 1439 Solved: 719[Submit][Status] ...
- UESTCACM 每周算法讲堂 延迟标记+bfs dfs搜索入门
http://www.bilibili.com/video/av4163472/ 地址在上面~
- HDU 5297 Y sequence 容斥 迭代
Y sequence 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5297 Description Yellowstar likes integer ...
- Linux下使用ping出现destination is unreachable的问题可能性
ping时出现request time out和destination is unreachable request time out是指icmp包发出后,长时间没有回应,所以会产生request t ...
- 开发笔记:python与随机数(转)
这些天需要用到从一堆数中随机提取几个数,于是重新研究了下random模块. 下面介绍下random中常见的函数. 前提:需要导入random模块 >>>import random 1 ...
- UIColor和 同 CIColor 与 CGColor 之间的联系、转换
1. 利用UIColor展现 #F6F6F6 这个传统的颜色 #F6F6F6 为一个 16 进制表示的RPG颜色,所以,需要先转换成 10进制,其中 F6 - 240,F6 - 240 ,F6 - ...