【STL】C++标准库中的函数对象(仿函数)
本文介绍一下 C标准库中的函数对象包括如何创建函数对象以及函数对象与容器和算法直接的用法。目录1 概述2 创建函数对象3 函数对象与容器4 函数对象与算法5 为什么优先用仿函数而不是普通函数1 概述函数对象也叫仿函数是重载了 operator()调用运算符的类型。这个运算符被称为调用运算符。C标准库主要把函数对象用作容器的排序规则以及算法的判断条件。相比普通全局函数函数对象具备两大优势函数对象可以保存内部状态普通函数只能依赖全局变量携带数据仿函数可以把数据存为成员变量闭包效果更好、更安全函数对象本身是一种类型能够作为模板参数使用std::setT, Comp、std::sort 的模板参数必须是类型普通函数只是实例无法直接填入模板而仿函数类型可以直接传入典型例子std::lessT、std::greaterT 都是标准库内置的函数对象。2 创建函数对象创建函数对象的方法定义一个类型并实现 operator()示例如下classLessThanFunctor{public:booloperator()(inta,intb){returnab;}};intmain(){LessThanFunctor less_than;inta5;intb7;boolansless_than(a,b);}main 函数最后一行演示了函数对象的调用方式。这种写法看起来像调用普通函数但本质是调用 LessThanFunctor 实例的 operator()。正是因为调用形式和普通函数高度一致它才被称为函数对象。注普通函数不能携带成员变量而仿函数可以在类里增加成员来保存运行时状态这是它最大的优势。3 函数对象与容器C标准库在头文件 functional 中提供了一系列内置函数对象。它们典型的用途之一就是为容器提供排序规则。以 set 容器的声明为例第二个模版函数是函数对象 less。如果第一个参数小于第二个参数则此函数对象返回 true。因为某些容器对其元素进行排序所以容器需要一种方法来比较两个元素。该比较通过使用函数对象执行。你可以创建函数对象并在容器的模板列表中指定它从而定义你自己的排序条件。4 函数对象与算法函数对象的另一大用途是配合标准算法使用。以 remove_if 算法的声明为例remove_if 的最后一个参数是返回布尔值的函数对象也叫谓词。如果函数对象调用的结果是 true则对应的元素就会被移除被移动到 remove_if 返回的新尾迭代器之后。既可以使用在 functional 头文件里预定好的函数对象作为 pred也可以自己编写自定义函数对象。5 为什么优先用仿函数而不是普通函数仿函数可以携带成员变量保存条件灵活性更强类型匹配更稳定更容易触发编译器优化

相关新闻

本地部署 Qwen2.5,Radeon GPU 加速效果实测

本地部署 Qwen2.5,Radeon GPU 加速效果实测

为什么 Qwen2.5 在 Radeon GPU 上“跑通”不等于“好用” 很多开发者在本地部署大模型时,容易陷入一个误区:只要模型能加载、能吐出字,就算成功了。但在实际开发中,如果首字延迟超过 1 秒,或者生成速度只有每秒几个 to…

2026/6/27 22:07:13阅读更多 →
拒绝显存焦虑,64GB 内存让长上下文推理更流畅

拒绝显存焦虑,64GB 内存让长上下文推理更流畅

为什么普通笔记本在长文本面前会“崩溃” 处理长文档一直是本地大模型部署的痛点。很多开发者都有过这样的经历:试图让模型总结一份几十页的技术白皮书,或者分析一本小说的关键情节,结果刚把文本投喂进去,程序就报 Out Of Memory …

2026/6/27 22:07:13阅读更多 →
Ollama 对比 LM Studio,Ryzen AI 用户该怎么选

Ollama 对比 LM Studio,Ryzen AI 用户该怎么选

为什么在 Strix Halo 上还要纠结工具选谁? 最近入手了搭载 AMD Strix Halo 架构的新本,最让我惊喜的不是游戏帧数,而是那块集成度极高的 Radeon 显卡释放出的端侧 AI 算力。对于开发者而言,本地跑大模型(LLM&#xff0…

2026/6/27 22:07:13阅读更多 →
《数字政府统一基础运维规范 第4部分:政务外网网络安全服务要求》标准解读

《数字政府统一基础运维规范 第4部分:政务外网网络安全服务要求》标准解读

2025年12月广东省数字政务协会发布的T/DGAG 037—2025《数字政府统一基础运维规范 第4部分:政务外网网络安全服务要求》,是广州市数字政府统一基础运维标准体系的核心组成部分。本文从标准定位、权责边界、服务体系、治理机制四个维度展开系统解读。01 标…

2026/6/27 23:42:24阅读更多 →
STM32 低功耗模式完全笔记 —— STM32 标准库实现

STM32 低功耗模式完全笔记 —— STM32 标准库实现

先说一个重要的名称问题: Stop1 / Stop2 是 STM32L 系列(超低功耗系列)的叫法,STM32F103 没有这个区分。 STM32F103 的三种低功耗模式叫:Sleep(睡眠)/ Stop(停机)/ Standby(待机)。 本笔记以 STM32F103 为主,最后附上 STM32L 系列 Stop1/Stop2 的区别说明。 一、为…

2026/6/27 23:42:24阅读更多 →
Oracle 11g RAC集群删除节点和重建(二)

Oracle 11g RAC集群删除节点和重建(二)

Oracle 11g RAC集群删除节点和重建(二) 一、前提说明 本文章计划删除节点三,这一点要注意!!! 1、本文章实验在一个4节点RAC集群中删除一个节点,实际如果是2节点RAC集群环境,步骤基本…

2026/6/27 23:42:24阅读更多 →
美光财报背后的AI算力产业链投资机会

美光财报背后的AI算力产业链投资机会

美光财报背后的AI算力产业链投资机会 核心结论 美光2026财年第三财季财报炸裂,不仅验证了AI存储超级周期的确定性,更揭开了整个AI算力产业链的长期增长逻辑——从上游芯片到中游算力调度,再到下游应用落地,全产业链都将迎来黄金发…

2026/6/27 23:42:24阅读更多 →
openGauss 迁移到 GreatSQL:DataX 全流程实操指南

openGauss 迁移到 GreatSQL:DataX 全流程实操指南

背景 某套业务系统当前使用 openGauss 数据库,后续计划切换到 GreatSQL。本文示例是使用 DataX 将 openGauss 的一张业务表的数据同步到 GreatSQL 的过程,主要包括 DataX 安装、JDBC 驱动准备、目标表结构转换、任务配置以及迁移结果校验。 实际的生产数…

2026/6/27 23:42:24阅读更多 →
IBM 推出 0.7 纳米芯片:性能提升 50%、能效提高 70%,人工智能硬件迎新突破

IBM 推出 0.7 纳米芯片:性能提升 50%、能效提高 70%,人工智能硬件迎新突破

【导语:周四,IBM 推出首款采用最新半导体技术的 0.7 纳米芯片,集成近 1000 亿晶体管,性能和能效大幅提升。虽距量产尚需时间,但有望缓解人工智能硬件需求压力。】指甲大小芯片集成近 1000 亿晶体管周四,IBM…

2026/6/27 23:37:24阅读更多 →
【人工智能】一文搞定到底什么是智能体

【人工智能】一文搞定到底什么是智能体

【人工智能】一文搞定到底什么是智能体 一文搞定到底什么是智能体【人工智能】一文搞定到底什么是智能体一. LM,WorkFlow,Agent分别有什么么不同二. Agent的思考过程是怎样的三. Agent的五个核心部分1)LLM2)Prompt3)Me…

2026/6/27 11:20:40阅读更多 →
嵌入式GUI控件实战:ROTARY、SCROLLBAR、SLIDER原理与应用

嵌入式GUI控件实战:ROTARY、SCROLLBAR、SLIDER原理与应用

1. 嵌入式GUI控件:从原理到实战的深度解析在嵌入式系统开发中,图形用户界面(GUI)的设计与实现往往是项目从“能用”到“好用”的关键一跃。不同于资源充沛的PC或移动平台,嵌入式设备的GUI需要在有限的CPU性能、内存空间…

2026/6/27 5:46:02阅读更多 →
Google AI Studio 300美元额度的真相与实战指南

Google AI Studio 300美元额度的真相与实战指南

1. 这300美金不是“送钱”,而是Google埋下的第一道技术门槛 你看到标题里那个醒目的“$300美金”时,第一反应可能是:又一个免费额度?领完就完事?我亲手试过——这300美金根本不是红包,而是一张入场券&…

2026/6/27 11:20:39阅读更多 →
10分钟AI语音克隆与实时变声:Retrieval-based-Voice-Conversion-WebUI完整指南

10分钟AI语音克隆与实时变声:Retrieval-based-Voice-Conversion-WebUI完整指南

10分钟AI语音克隆与实时变声&#xff1a;Retrieval-based-Voice-Conversion-WebUI完整指南 【免费下载链接】Retrieval-based-Voice-Conversion-WebUI Easily train a good VC model with voice data < 10 mins! 项目地址: https://gitcode.com/GitHub_Trending/re/Retrie…

2026/6/27 0:04:03阅读更多 →
Layerdivider:3分钟AI智能分层,彻底告别手动抠图时代

Layerdivider:3分钟AI智能分层,彻底告别手动抠图时代

Layerdivider&#xff1a;3分钟AI智能分层&#xff0c;彻底告别手动抠图时代 【免费下载链接】layerdivider A tool to divide a single illustration into a layered structure. 项目地址: https://gitcode.com/gh_mirrors/la/layerdivider 还在为复杂的图像分层工作烦…

2026/6/27 0:04:03阅读更多 →
Tomcat中X-Frame-Options配置实战:防御点击劫持的四种方法与最佳实践

Tomcat中X-Frame-Options配置实战:防御点击劫持的四种方法与最佳实践

1. 项目概述&#xff1a;为什么X-Frame-Options是Web安全的“防盗门”&#xff1f;最近在排查一个老项目的安全审计报告时&#xff0c;又被提到了“点击劫持”风险&#xff0c;矛头直指缺失的X-Frame-Options响应头。这已经不是第一次了&#xff0c;很多开发团队&#xff0c;尤…

2026/6/27 0:04:03阅读更多 →