STL 标准库 - 002

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

using namespace std;
bool print(int i)
{
    cout<<i<<" ";
    return true;
}
class Less{
public:
    Less(size_t val = 0):bound(val){}
    bool operator()(int x)
    {
        return x < bound;
    }
private:
    size_t bound;
};
bool LESS(int x)
{
    return x < 10;
}
int main()
{
    // 函数对象常用于覆盖算法用的默认操作符
    //打印
    vector<int> v{1,2,5,4,23,2,34,56,23,12,8,34};
    for_each (v.begin(),v.end(),print);cout<<endl;
    //排序
    sort(v.begin(),v.end());
    for_each (v.begin(),v.end(),print);cout<<endl;
    sort(v.begin(),v.end(),greater<int>());
    for_each (v.begin(),v.end(),print);cout<<endl;
    //函数对象
    //1:谓词
    auto cnt = count_if(v.begin(),v.end(),LESS);//vector<int>::size_type
    cout<<"cnt="<<cnt<<endl;
    //2:自定义函数对象
    cnt = count_if(v.begin(),v.end(),Less(10));
    cout<<"cnt="<<cnt<<endl;
    //3:标准库函数对象
    cnt = count_if(v.begin(),v.end(),bind2nd(less<int>(),10));
    cout<<"cnt="<<cnt<<endl;
    //other
    cnt = count_if(v.begin(),v.end(),not1(bind2nd(greater_equal<int>(),10)));
    cout<<"cnt="<<cnt<<endl;
    return 0;
}
©️2020 CSDN 皮肤主题: 大白 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值