从零开始学C++之STL(八):函数对象、 函数对象与容器、函数对象与算法

本文详细介绍了C++中的函数对象,包括它们的定义、自定义方式以及在STL中的应用。通过实例展示了函数对象如何与容器(如map)结合进行排序,以及在算法中实现自定义比较和计算逻辑。同时,文章提到了STL内置的函数对象类,并推荐了几本C++学习参考书籍。
摘要由CSDN通过智能技术生成

一、函数对象

1、函数对象(function object)也称为仿函数(functor)


2、一个行为类似函数的对象,它可以没有参数,也可以带有若干参数。


3、任何重载了调用运算符operator()的类的对象都满足函数对象的特征


4、函数对象可以把它称之为smart function。


5、STL中也定义了一些标准的函数对象,如果以功能划分,可以分为算术运算、关系运算、逻辑运算三大类。为了调用这些标准函数对象,需要包含头文件<functional>。


二、自定义函数对象

 C++ Code 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
using  namespace std;
class CFunObj
{
public:
     void  operator()()
    {
        cout <<  "hello,function object!" << endl;
    }
};
int main()
{
    CFunObj fo;
    fo();
    CFunObj()();
     return  0;
}

注意:CFunObj()(); 表示先构造一个匿名对象,再调用operator();


三、函数对象与容器


在这边举map 容器的例子,大家都知道map 在插入元素的时候会自动排序,默认是根据key 从小到大排序,看map 的定义:

 C++ Code 
1
2
3
4
5
6
7
8
9
10
// TEMPLATE CLASS map
template <  class _Kty,
          class _Ty,
          class _Pr = less<_Kty>,
          class _Alloc = allocator<pair< const _Kty, _Ty> > >
class map
    :  public _
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值