c++ 函数适配器,模板的运用:count_if,less,bind2nd,binder2nd

这篇博客探讨了C++中模板在函数适配器如count_if、less、bind2nd和binder2nd中的应用。内容涉及如何使仿函数适应STL体系,比较了C++98和C++11中less函数的不同实现方式,并提及C++11后bind2nd和binder2nd被弃用,取而代之的是更强大的bind函数。
摘要由CSDN通过智能技术生成

下面这小小的一个函数,包含了模板的基本应用,学习标准库基本内容来提高对模板的认识。

#include <vector>
#include <iostream>
#include <functional>
#include <algorithm>

int main(int argc char** argv) {
    std::vector<int> tmp_vac = {
        3, 4, -6, 10, 2, -9
    };
    // 统计容器中小于0的数,当然可以自己简单的实现一个函数
    int num = std::count_if(tmp_vac.begin(), tmp_vac.end(),
            std::bind2nd(std::less<int>(),0));
    std::cout << "There are " << num << " negative elements" << std::endl;
    
    return 0;
}
// InputIterator 容器的迭代器,UnaryPredicate 需要一个参数的函数(仿函数)
template <class InputIterator, class UnaryPredicate>
  // iterator_traits 迭代器萃取,迭代器需要定义5大类型
  // difference_type 迭代器距离类型,可以看成 int 类型,但其实不是
  typename iterator_traits<InputIterator>::diffe
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值