STL-函数对象
发布日期:2021-11-20 10:17:59
浏览次数:17
分类:技术文章
本文共 2106 字,大约阅读时间需要 7 分钟。
1.函数对象的概念:
重载函数调用操作符的类,其对象常称为函数对象 函数对象使用重载的()时,行为类似函数调用,也叫仿函数本质:函数对象(仿函数)是一个类,不是一个函数
2.函数对象的特点:
函数对象在使用时,可以像普通函数那样调用,可以有参数,可以有返回值。
函数对象超出普通函数的概念,函数对象可以有自己的状态。 函数对象可以作为参数传递。#include "pch.h"#include#include #include #include #include using namespace std;//函数对象class myadd { public: int operator()(int v1,int v2) { return v1 + v2; }};void test01() { myadd myadd;//创建函数对象 cout << myadd(10, 10) << endl;}
谓词:
概念: 1,。返回bool类型的仿函数称为谓词 2.如果operator()接受一个参数,那么叫做一元谓词 3.如果operator()接受两个参数,那么叫做二元谓词//仿函数 一元谓词class greaterfive { public: bool operator()(int val) { return val > 5; }};void test02() { vector v; for (int i = 0; i < 10; i++) { v.push_back(i); } //查找容器中有没有大于5的 //greaterfive()为匿名的函数对象 vector ::iterator it = find_if(v.begin(), v.end(), greaterfive()); if (it == v.end) { cout << "未找到" << endl; } else { cout << "找到了大于5的数字" << endl; }}
//二元谓词class compare { public: bool operator()(int val1,int val2) { return val1 > val2; }};void test03() { vector v; v.push_back(10); v.push_back(20); v.push_back(30); v.push_back(40); v.push_back(50); //使用函数对象,改变算法策略,变为排序从大到小 sort(v.begin(),v.end(), compare()); }
内建函数对象
STL内建 了一些函数对象
分类:
算术仿函数 四则运算 原型: template T plus 加 template T minus 减 template T multiplies 乘 template T divides 除 template T modulus 求模 template T negate 取反 一元/算术仿函数//negate一元仿函数,取反//plus 二元仿函数void test04() { negate n; n(50);//对50取反 plus p; p(10, 10);}
关系仿函数 大于小于
函数原型:
template bool equal_to 等于 template bool not_equal_to 不等于 template bool greater 大于 template bool greater_equal 大于等于 template bool less 小于 template bool less_equal 小于等于//关系仿函数void test03() { vector v; v.push_back(10); v.push_back(20); v.push_back(30); v.push_back(40); v.push_back(50); //使用函数对象,改变算法策略,变为排序从大到小 sort(v.begin(), v.end(), greater ());}
逻辑仿函数 与或非
template bool logical_and 与 template bool logical_or 或 template bool logical_not 非用法:
这些仿函数所产生的对象,用法和一般函数完全相同 使用内建函数对象,需要引入头文件#include转载地址:https://blog.csdn.net/weixin_43223362/article/details/103283786 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
初次前来,多多关照!
[***.217.46.12]2024年04月01日 00时03分50秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
FD.io/VPP — L2 vSwitch
2019-04-27
FD.io/VPP — QoS — DPDK Hqos
2019-04-27
Kubernetes — Kubespray 开箱即用的部署工具
2019-04-27
Ansible — Inventory 清单文件
2019-04-27
Openstack组件部署 — Nova overview
2019-04-27
Openstack组件部署 — Nova_安装和配置Controller Node
2019-04-27
全虚拟化与半虚拟化的实现方式
2019-04-27
KVM 虚拟化架构和实现原理
2019-04-27
Openstack组件实现原理 — Nova 体系结构
2019-04-27
从 2017 OpenStack Days China 看国内云计算的发展现状
2019-04-27
Python Module_Socket_网络编程
2019-04-27
VMware 虚拟机的虚拟磁盘编程知识点扫盲之一
2019-04-27
疑难杂症——bash: /dev/null: Permission denied
2019-04-27
VMware 虚拟机的虚拟磁盘编程知识点扫盲之二
2019-04-27
VMware 虚拟化编程(2) — 虚拟磁盘文件类型详解
2019-04-27
让人失望透顶的 CSDN 博客改版
2019-04-27
VMware 虚拟化编程(9) — VMware 虚拟机的快照
2019-04-27
VMware 虚拟化编程(10) — VMware 数据块修改跟踪技术 CBT
2019-04-27