• 93.STL-系统内置仿函数


           

    目录

     算术仿函数

    关系仿函数 

    逻辑仿函数 


            C++ 标准库中提供了一些内置的函数对象,也称为仿函数,它们通常位于 头文件中。以下是一些常见的系统内置仿函数:

     算术仿函数

    功能描述:

    • 实现四则运算
    • 其中negate是一元运算,其他都是二元运算

    仿函数原型:

    • template T plus //加法仿函数
    • template T minus //减法仿函数
    • template T multiplies //乘法仿函数
    • template T divides //除法仿函数
    • template T modulus //取模仿函数
    • template T negate //取反仿函数
    1. #include
    2. #include
    3. using namespace std;
    4. int main() {
    5. plus<int> m;//加法仿函数
    6. cout << m(10,20) << endl;
    7. minus<int> m1;//减法仿函数
    8. cout << m1(20, 10) << endl;
    9. multiplies<int> m2;//乘法仿函数
    10. cout << m2(20, 10) << endl;
    11. divides<int> m3;//除法仿函数
    12. cout << m3(20, 10) << endl;
    13. modulus<int> m4;//取模仿函数
    14. cout << m4(20, 8) << endl;
    15. negate<int> m5;//取反仿函数
    16. cout << m5(20) << endl;
    17. return 0;
    18. }

     

    关系仿函数 

    功能描述:

    • 实现关系对比

    仿函数原型:

    • template bool equal_to //等于
    • template bool not_equal_to //不等于
    • template bool greater //大于
    • template bool greater_equal //大于等于
    • template bool less //小于
    • template bool less_equal //小于等于
    1. void test01()
    2. {
    3. vector<int> v;
    4. v.push_back(10);
    5. v.push_back(30);
    6. v.push_back(50);
    7. v.push_back(40);
    8. v.push_back(20);
    9. for (vector<int>::iterator it = v.begin(); it != v.end(); it++) {
    10. cout << *it << " ";
    11. }
    12. cout << endl;
    13. //自己实现仿函数
    14. //sort(v.begin(), v.end(), MyCompare());
    15. //STL内建仿函数 大于仿函数
    16. sort(v.begin(), v.end(), greater<int>());//大于
    17. for (vector<int>::iterator it = v.begin(); it != v.end(); it++) {
    18. cout << *it << " ";
    19. }
    20. cout << endl;
    21. }
    22. int main() {
    23. test01();
    24. system("pause");
    25. return 0;
    26. }

     

    逻辑仿函数 

    功能描述:

    • 实现逻辑运算

    函数原型:

    • template bool logical_and //逻辑与
    • template bool logical_or //逻辑或
    • template bool logical_not //逻辑非
    1. void test01()
    2. {
    3. vector<bool> v;
    4. v.push_back(true);
    5. v.push_back(false);
    6. v.push_back(true);
    7. v.push_back(false);
    8. for (vector<bool>::iterator it = v.begin(); it != v.end(); it++)
    9. {
    10. cout << *it << " ";
    11. }
    12. cout << endl;
    13. //逻辑非 将v容器搬运到v2中,并执行逻辑非运算
    14. vector<bool> v2;
    15. v2.resize(v.size());
    16. transform(v.begin(), v.end(), v2.begin(), logical_not<bool>());
    17. for (vector<bool>::iterator it = v2.begin(); it != v2.end(); it++)
    18. {
    19. cout << *it << " ";
    20. }
    21. cout << endl;
    22. }
    23. int main() {
    24. test01();
    25. system("pause");
    26. return 0;
    27. }

     

     写在最后:以上就是本篇文章的内容了,感谢你的阅读。如果感到有所收获的话可以给博主点一个赞哦。如果文章内容有遗漏或者错误的地方欢迎私信博主或者在评论区指出~  

  • 相关阅读:
    第3章-8 字符串逆序
    SQL Server对象类型(4)——4.4.索引视图(Indexed View)
    力扣 307. 区域和检索 - 数组可修改
    EasyExcel对大数据量表格操作导入导出
    实验六—基本数据管理(三)
    语言基础篇8——表达式,多种多样的表达方式
    JSP居民信息采集系统yeclipse开发mysql数据库bs框架java编程jdbc详细设计
    Node.js 前后端分离开发新思路
    MongoDB(一):CentOS7离线安装MongoDB单机版与简单使用
    实例Python对比两个word文档并找出不同
  • 原文地址:https://blog.csdn.net/weixin_63779802/article/details/134564156