• 内建函数对象


    内建函数对象意义

    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. }

  • 相关阅读:
    Rust基本数据类型-字符串
    lazada商品评论列表获取方法
    哈工大李治军老师操作系统笔记【6】:CPU管理的直观想法(Learning OS Concepts By Coding Them !)
    计算输入的正数和负数个数
    java-php-python-ssm-电脑小白网站-计算机毕业设计
    经典算法之顺序查找法
    CycleGAN论文解读+思想+学习路径
    STM32:OLED屏幕开发
    Ubuntu下安装配置和调优Docker,支持IPV6
    海底捞逃离小县城
  • 原文地址:https://blog.csdn.net/2301_77164542/article/details/133248114