• c++STL之內建函数对象


    STL内建了一些函数对象:算数仿函数、关系仿函数、逻辑仿函数

    用法:

    这些仿函数所产生的对象,用法和一般函数完全相同;

    使用內建函数对象,需要引入头文件#<include><functional>

    一、算数仿函数

    #include<iostream>
    using namespace std;
    #include <functional> //内建函数对象头文件
    
    //内建函数对象  算术仿函数
    
    //negate 一元仿函数  取反仿函数
    void test01()
    {
        negate<int>n;
    
        cout << n(50) << endl;
    }
    
    //plus  二元仿函数   加法
    void test02()
    {
        plus<int>p;
    
        cout << p(10, 20) << endl;
    }
    
    int main() {
    
        test01();
    
        test02();
    
        system("pause");
    
        return 0;
    }

    二、关系仿函数

    #include<iostream>
    using namespace std;
    #include <vector>
    #include <algorithm>
    #include <functional>
    
    
    //内建函数对象 _关系仿函数  
    //大于 greater
    class MyCompare 
    {
    public:
        bool operator()(int v1,int v2)
        {
            return v1 > v2;
        }
    };
    
    void test01()
    {
        vector<int>v;
    
        v.push_back(10);
        v.push_back(30);
        v.push_back(40);
        v.push_back(20);
        v.push_back(50);
    
        for (vector<int>::iterator it = v.begin(); it != v.end(); it++)
        {
            cout << *it << " ";
        }
        cout << endl;
    
        //降序
        //sort(v.begin(), v.end(), MyCompare());
        //greater<int>() 内建函数对象
        sort(v.begin(), v.end(), greater<int>());
        for (vector<int>::iterator it = v.begin(); it != v.end(); it++)
        {
            cout << *it << " ";
        }
        cout << endl;
    
    }
    
    int main() {
    
        test01();
    
        system("pause");
    
        return 0;
    }

    3.逻辑仿函数

    #include<iostream>
    using namespace std;
    #include <vector>
    #include <algorithm>
    #include <functional>
    
    //内建函数对象_逻辑仿函数
    //逻辑非  logical_not
    
    void test01()
    {
        vector<bool>v;
        v.push_back(true);
        v.push_back(false);
        v.push_back(true);
        v.push_back(false);
    
        for (vector<bool>::iterator it = v.begin(); it != v.end(); it++)
        {
            cout << *it << " ";
        }
        cout << endl;
    
        //利用逻辑非  将容器v 搬运到 容器v2中,并执行取反操作
        vector<bool>v2;
        v2.resize(v.size());
    
        transform(v.begin(), v.end(), v2.begin(), logical_not<bool>());
    
        for (vector<bool>::iterator it = v2.begin(); it != v2.end(); it++)
        {
            cout << *it << " ";
        }
        cout << endl;
    
    }
    
    
    int main() {
    
        test01();
    
        system("pause");
    
        return 0;
    }
  • 相关阅读:
    数据库中char、varchar、varchar2、nvarchar之间的关系
    Oracle中scott用户下基本表练习SQL语句
    判断一个数是否是素数
    阿里P7前端需要哪些技能
    react Native 踩坑记录
    流程节点(2018.7.31)
    在centos7下手工安装和配置Nginx
    微信公众号开发
    nodejs 实战
    数据库权限表的设计
  • 原文地址:https://www.cnblogs.com/xiximayou/p/12112483.html
Copyright © 2020-2023  润新知