C++函数作为参数

一.函数作为参数

1. 使用函数指针

void callFunction(void (*funcPtr)(int), int num) {  } 

2. 使用std::function

void callFunction(std::function<void(int)> func, int num) { }

使用时以函数名作为实参

二.函数对象

通过创建一个类并重载()来创建函数对象,主要用于STL容器和算法。相对于直接函数调用,函数对象有两个优势。 第一个是函数对象可包含状态。 第二个是函数对象是一个类型,因此可用作模板参数。

第二个模板函数是模板函数对象 less

template <class Key,
    class Traits=less<Key>,
    class Allocator=allocator<Key>>
class set

remove_if 的最后一个参数是返回布尔值(一个 谓词)的函数对象

template <class ForwardIterator, class Predicate>
ForwardIterator remove_if(
    ForwardIterator first,
    ForwardIterator last,
    Predicate pred);

函数可以在某些情况下替换STL模板容器或算法中的函数对象作为参数。比如

bool UDgreater ( int elem1, int elem2 )
{
    return elem1 > elem2;
}
sort( v1.begin( ), v1.end( ), UDgreater );

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值