• 内建函数对象


    内建函数对象意义

    STL内建了一些函数对象
    分类:
            算术仿函数
            关系仿函数
            逻辑仿函数
    用法:
            这些仿函数所产生的对象,用法和一般函数完全相同
            使用内建函数对象,需要引入头文件#include

    算术仿函数

    功能描述:
            实现四则运算
            其中negate是一元运算,其他都是二元运算
    仿函数原型:
    template T plus//加法仿函数
    template T minus//减法仿函数
    template T multiplies//乘法仿函数
    emplate T divides//除法仿函数t
    template T modulus//取模仿函数
    template T negate//取反仿函数

    示例

    1. #include
    2. #include
    3. #include
    4. #include
    5. #include
    6. #include
    7. #include
    8. #include
    9. #include
    10. #include
    11. #include
    12. #include
    13. #include
    14. #include
    15. #include
    16. using namespace std;
    17. void test01()
    18. {
    19. negate<int>n;
    20. cout << n(50) << endl;//-50
    21. }
    22. void test02()
    23. {
    24. plus<int>p;
    25. cout << p(10,20)<< endl;//30
    26. }
    27. int main()
    28. {
    29. test01();
    30. test02();
    31. return 0;
    32. }

    关系仿函数

    功能描述:
            实现关系对比
    仿函数原型:
            template bool equal to//等于
            template bool not equal to//不等于
            template bool greater//大于
            template bool greater equal//大于等于
            template bool less//小于
            template bool less-equal//小于等于

    1. #include
    2. #include
    3. #include
    4. #include
    5. #include
    6. #include
    7. #include
    8. #include
    9. #include
    10. #include
    11. #include
    12. #include
    13. #include
    14. #include
    15. #include
    16. using namespace std;
    17. class mycom
    18. {
    19. public:
    20. int operator()(int v1,int v2)
    21. {
    22. return v1 > v2;
    23. }
    24. };
    25. void test01()
    26. {
    27. vector<int>v;
    28. v.push_back(10);
    29. v.push_back(20);
    30. v.push_back(30);
    31. v.push_back(40);
    32. v.push_back(50);
    33. for(vector<int>::iterator it = v.begin();it!=v.end();it++)
    34. {
    35. cout << *it;
    36. }
    37. cout << endl;
    38. //sort(v.begin(),v.end(),mycom());
    39. sort(v.begin(),v.end(),greater<int>());//编译器提供的函数对象
    40. for(vector<int>::iterator it = v.begin();it!=v.end();it++)
    41. {
    42. cout << *it;
    43. }
    44. }
    45. int main()
    46. {
    47. test01();
    48. return 0;
    49. }

    逻辑仿函数

    功能描述:
            实现逻辑运算
    函数原型:
            template bool logical and//逻辑与
            template bool logical or   //逻辑或
            template bool logical not//逻辑非

    1. #include
    2. #include
    3. #include
    4. #include
    5. #include
    6. #include
    7. #include
    8. #include
    9. #include
    10. #include
    11. #include
    12. #include
    13. #include
    14. #include
    15. #include
    16. using namespace std;
    17. class mycom
    18. {
    19. public:
    20. int operator()(int v1,int v2)
    21. {
    22. return v1 > v2;
    23. }
    24. };
    25. void test01()
    26. {
    27. vector<bool>v;
    28. v.push_back(true);
    29. v.push_back(false);
    30. v.push_back(true);
    31. v.push_back(false);
    32. for(vector<bool>::iterator it = v.begin();it!=v.end();it++)
    33. {
    34. cout << *it << " ";
    35. }
    36. cout << endl; //1 0 1 0
    37. //利用逻辑非 将容器v 搬运到容器v2
    38. vector<bool>v2;
    39. v2.resize(v.size());
    40. transform(v.begin(),v.end(),v2.begin(),logical_not<bool>());//搬运
    41. for(vector<bool>::iterator it = v2.begin();it!=v2.end();it++)
    42. {
    43. cout << *it << " ";
    44. }
    45. cout << endl; //0 1 0 1
    46. }
    47. int main()
    48. {
    49. test01();
    50. return 0;
    51. }

  • 相关阅读:
    使用Python进行页面开发——Django常用Web工具
    「译文」Google SRE 二十年的经验教训
    202435读书笔记|《半小时漫画中国史》——读点经济学与历史,生活更美好,趣味烧脑土地制度、商鞅变法、华丽丽的丝绸之路这里都有
    【Vue.js 3.0源码】KeepAlive 组件:如何让组件在内存中缓存和调度?
    JAVAEE:采用HTML和JavaScript实现几个基本的页面
    「专题速递」JPEG AI、端到端图像编码的标准化及产品落地、深度学习
    学生静态HTML个人博客主页【Web大学生网页作业成品】HTML+CSS+JavaScript
    python中的if ... is None else ...含义与用法
    java 数组及方法
    flex的用法 代码6
  • 原文地址:https://blog.csdn.net/2301_77164542/article/details/133248114