Linux C++ 035-STL之内建函数对象

2024-04-15 21:12

本文主要是介绍Linux C++ 035-STL之内建函数对象,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Linux C++ 035-STL之内建函数对象

本节关键字:Linux、C++、内建函数
相关库函数:

内建函数对象意义

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

算术仿函数

功能描述:实现四则运算,其中negate是一元运算,其他都是二元运算
仿函数原型:

template<class T> T plus<T>			//加法仿函数
template<class T> T minus<T>		//减法仿函数
template<class T> T multiplies<T>	//乘法仿函数
template<class T> T divides<T>		//除法仿函数
template<class T> T modulus<T>		//取模仿函数
template<class T> T negate<T>		//取反仿函数

示例:

#include <fanctional>//取反
void test01()
{negate<int> n;cout << n(50) << endl;
}//加法
void test01()
{plus<int> p;cout << p(10, 20) << endl;
}

总结:使用内建函数对象时,需要引入头文件 #include

关系仿函数

功能描述:实现关系对比
仿函数原型:

template<class T> bool equal_to<T>		//等于
template<class T> bool not_equal_to<T>	//不等于
template<class T> bool greater<T>		//大于
template<class T> bool greater_equal<T>	//大于等于
template<class T> bool less<T>			//小于
template<class T> bool less_equal<T>	//小于等于

示例:

#include <functional>
#include <vector>
#include <algorihtm>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());sort(v.begin(), v.end(), greater<int>());//内建函数对象for(vector<int>::iterator it = v.begin();it != v.end();it++){cout << *it << " ";}cout << endl;}

总结:关系仿函数中最常用的就是greater<>大于

逻辑仿函数

功能描述:实现逻辑运算
仿函数原型:

template<class T> bool logical_and<T>	//逻辑与
template<class T> bool logical_or<T>	//逻辑或
template<class T> bool logical_not<T>	//逻辑非

示例:

#include <vector>
#include <functional>
#include <algorithm>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());//重新指点v2的大小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;
}

总计:逻辑仿函数实际应用较少,了解即可

这篇关于Linux C++ 035-STL之内建函数对象的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/906940

相关文章

Linux下修改hostname的三种实现方式

《Linux下修改hostname的三种实现方式》:本文主要介绍Linux下修改hostname的三种实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux下修改ho编程stname三种方式方法1:修改配置文件方法2:hFvEWEostnamectl命

Linux虚拟机不显示IP地址的解决方法(亲测有效)

《Linux虚拟机不显示IP地址的解决方法(亲测有效)》本文主要介绍了通过VMware新装的Linux系统没有IP地址的解决方法,主要步骤包括:关闭虚拟机、打开VM虚拟网络编辑器、还原VMnet8或修... 目录前言步骤0.问题情况1.关闭虚拟机2.China编程打开VM虚拟网络编辑器3.1 方法一:点击还原VM

Java实现将byte[]转换为File对象

《Java实现将byte[]转换为File对象》这篇文章将通过一个简单的例子为大家演示Java如何实现byte[]转换为File对象,并将其上传到外部服务器,感兴趣的小伙伴可以跟随小编一起学习一下... 目录前言1. 问题背景2. 环境准备3. 实现步骤3.1 从 URL 获取图片字节数据3.2 将字节数组

Win32下C++实现快速获取硬盘分区信息

《Win32下C++实现快速获取硬盘分区信息》这篇文章主要为大家详细介绍了Win32下C++如何实现快速获取硬盘分区信息,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 实现代码CDiskDriveUtils.h#pragma once #include <wtypesbase

Linux搭建Mysql主从同步的教程

《Linux搭建Mysql主从同步的教程》:本文主要介绍Linux搭建Mysql主从同步的教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux搭建mysql主从同步1.启动mysql服务2.修改Mysql主库配置文件/etc/my.cnf3.重启主库my

Javascript访问Promise对象返回值的操作方法

《Javascript访问Promise对象返回值的操作方法》这篇文章介绍了如何在JavaScript中使用Promise对象来处理异步操作,通过使用fetch()方法和Promise对象,我们可以从... 目录在Javascript中,什么是Promise1- then() 链式操作2- 在之后的代码中使

MyBatis的配置对象Configuration作用及说明

《MyBatis的配置对象Configuration作用及说明》MyBatis的Configuration对象是MyBatis的核心配置对象,它包含了MyBatis运行时所需的几乎所有配置信息,这个对... 目录MyBATis配置对象Configuration作用Configuration 对象的主要作用C

Linux系统之authconfig命令的使用解读

《Linux系统之authconfig命令的使用解读》authconfig是一个用于配置Linux系统身份验证和账户管理设置的命令行工具,主要用于RedHat系列的Linux发行版,它提供了一系列选项... 目录linux authconfig命令的使用基本语法常用选项示例总结Linux authconfi

C++ Primer 标准库vector示例详解

《C++Primer标准库vector示例详解》该文章主要介绍了C++标准库中的vector类型,包括其定义、初始化、成员函数以及常见操作,文章详细解释了如何使用vector来存储和操作对象集合,... 目录3.3标准库Vector定义和初始化vector对象通列表初始化vector对象创建指定数量的元素值

jdk21下载、安装详细教程(Windows、Linux、macOS)

《jdk21下载、安装详细教程(Windows、Linux、macOS)》本文介绍了OpenJDK21的下载地址和安装步骤,包括Windows、Linux和macOS平台,下载后解压并设置环境变量,最... 目录1、官网2、下载openjdk3、安装4、验证1、官网官网地址:OpenJDK下载地址:Ar