当前位置: 首页 > news >正文

【C++】STL-函数对象-内建函数对象

0.前言

在这里插入图片描述

1.算术仿函数

在这里插入图片描述

#include <iostream>
using namespace std;// STL-内建函数对象-算术仿函数
#include<functional>  // 内建函数对象头文件//以下举例两个仿函数 -- negate and plus// negate 一元仿函数 取反仿函数
void test01()
{negate<int>n;cout << n(40) << endl;
}// plus 二元仿函数 加法
void test02()
{plus<int>p;cout << p(40, 10) << endl;
}int main()
{test01();cout << "------------------------" << endl;test02();//cout << "------------------------" << endl << endl;//test03();//**************************************system("pause");return 0;
} 

在这里插入图片描述

2.关系仿函数

在这里插入图片描述
在这里插入图片描述

#include <iostream>
using namespace std;// STL-内建函数对象-关系仿函数
//举例  -- 大于 greater
#include<vector>
#include<algorithm>
#include<functional>class MyCompare
{
public:bool operator()(int val1, int val2){return val1 > val2;}
};void test01()
{vector<int>v;v.push_back(10);v.push_back(40);v.push_back(20);v.push_back(30);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();cout << "------------------------" << endl;//test02();//cout << "------------------------" << endl << endl;//test03();//**************************************system("pause");return 0;
} 

在这里插入图片描述

3.逻辑仿函数

在这里插入图片描述
在这里插入图片描述

#include <iostream>
using namespace std;// STL-内建函数对象-逻辑仿函数
//举例  -- 逻辑非 logical_not
#include<vector>
#include<algorithm>
#include<functional>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();cout << "------------------------" << endl;//test02();//cout << "------------------------" << endl << endl;//test03();//**************************************system("pause");return 0;
} 

在这里插入图片描述

http://www.lryc.cn/news/155614.html

相关文章:

  • Redis 教程 - Redis 基本操作
  • FreeRTOS中断与任务之间同步(Error:..\..\FreeRTOS\portable\RVDS\ARM_CM4F\port.c,422 )
  • WebRTC清晰度和流畅度
  • 华为数通方向HCIP-DataCom H12-821题库(单选题:181-200)
  • 海康威视二次开发适配安卓电视盒子
  • NIO原理浅析(二)
  • leetcode每日一练-第53题-最大子数组和
  • 京东云接入【风险识别】接口
  • 在 linux 虚拟机上安装配置 hive
  • 作品集(陆续上传中)
  • 论文解读 | 三维点云深度学习的综述
  • 基于costas环的载波同步系统matlab性能仿真
  • 解码自我注意的魔力:深入了解其直觉和机制
  • mysql之存储引擎
  • 服务器日志出现大量NTLM(NT LAN Manager)攻击
  • Spring学习|Spring简介、IOC控制反转理解、IOC创建对象方式
  • DDR2 IP核调式记录2
  • 【ES6】js 中class的extends、super关键字用法和避坑点
  • mysql排名函数row_number()over(order by)和with * as 的用法
  • linux局域网IP地址冲突检测
  • 远距离WiFi模组方案,实现移动设备之间高效通信,无人机远程图传应用
  • Docker构建Springboot项目,并发布测试
  • flutter架构全面解析
  • QHttpServer
  • 21.3 CSS 背景属性
  • Ansible 常用命令50条
  • ceph源码阅读 erasure-code
  • C++ 之 命名空间
  • MyBatis关系映射
  • DVWA失效的访问控制