STL有三大核心部分:容器(Container)、算法(Algorithms)、迭代器(Iterator),容器适配器(container adaptor),函数对象(functor),除此之外还有STL其他标准组件,如果你使用容器不当,就会发生list iterators incompatible/vector iterators incompatible 的错误,报错如图:
如果你trace代码,你可以看到如下代码:
bool operator==(const _Myiter& _Rig...
分类:
其他好文 时间:
2015-02-06 11:20:26
阅读次数:
201
??
1.STL组成:
STL有三大核心部分:容器(Container)、算法(Algorithms)、迭代器(Iterator),容器适配器(containeradaptor),函数对象(functor),除此之外还有STL其他标准组件。通俗的讲:
容器:装东西的东西,装水的杯子,装咸水的大海,装人的教室……STL里的容器是可容纳一些数据的模板类。
算法:就是往杯子里倒水,往大海...
分类:
编程语言 时间:
2015-01-24 13:11:41
阅读次数:
312
看makefile:
#jingz's first file to test makeFile
allTarget:stdafx_target 11_12_target
g++ stdafx.o functor-adapter_p431.o -o functor-adapter_p431.exe
#remove the object files
rm -rf stdafx.o functor...
分类:
编程语言 时间:
2014-11-26 16:35:39
阅读次数:
211
1、仿函数的概念仿函数(functor),就是使一个类的使用看上去象一个函数。其实现就是类中实现一个operator(),这个类就有了类似函数的行为,就是一个仿函数类了。在写代码时有时会发现有些功能的实现的代码,会不断的在不同的成员函数中用到,但是又不好将这些代码独立出来成为一个类的一个成员函数。但...
分类:
编程语言 时间:
2014-11-04 16:44:33
阅读次数:
155
其实这个区别就好像普通函数和高阶函数的区别一样。这样是不是很好理解了呢,额,如果你说你还不知道啥是高阶函数,那么还是不要看这个文章了。下面来看看我是如何把他们类比起来的。 我们看看haskell中的Eq是如何...
分类:
其他好文 时间:
2014-09-17 20:33:52
阅读次数:
198
原文:http://blog.csdn.net/tianshuai1111/article/details/7687983一,概述 仿函数(functor),就是使一个类的使用看上去象一个函数。其实现就是类中实现一个operator(),这个类就有了类似函数的行为,就是一个仿函数类了。 有些...
分类:
编程语言 时间:
2014-08-06 14:41:21
阅读次数:
339
functor(仿函数), 或者称之为function object(函数对象), 是STL的四大组件之一。
什么是仿函数呢?
一个函数对象是封装在类中, 从而看起来更像是一个对象。 这个类只有一个成员函数, 即重载了() (括号)的运算符。 它没有任何数据。 该类被模板化了, 从而可以应付多种数据类型。
看一个例子:
上例中, 我们定义了一个类X, 然后我们在类中定义了一个运算...
分类:
其他好文 时间:
2014-07-27 11:56:33
阅读次数:
227
#include?<iostream>
#include?<algorithm>
using?namespace?std;
//回调函数
void?call_back(char?elem)
{
?cout?<<?elem?<<?endl;
}
//仿函数
struct?Functor
{
?void?operator()?(char?elem)...
分类:
其他好文 时间:
2014-07-22 08:13:37
阅读次数:
316
* Functor中文翻译为仿函数。* lambda与匿名函数密不可分。lambda本身隐式地定义了对应的函数对象类型(Functor Class)以及该类的对象(Functor object)。Functor特性* 可包含状态。* 可用作模板参数。* 与函数指针相比,Functor语法复杂(需要定...
分类:
编程语言 时间:
2014-07-16 21:57:10
阅读次数:
312
1. 复合函数操作符Prelude> :t (.)(.) :: (b -> c) -> (a -> b) -> a -> cPrelude> (.) ((+) 5) ((*) 2) 413 所以(.)操作符的作用,是将4作为参数传递给((*) 2)函数,再将结果传递给((+) 5)函数。这就是数学....
分类:
其他好文 时间:
2014-07-16 18:29:43
阅读次数:
279