<Effective STL>笔记--仿函数

Purify使用指南 1. 简介2. 安装2.1. 安装license2.2. 安装Purify3. 使用3.1. 查看帮助3.2. 使用步骤   ATTACH3.3. 查看BUG   ATTACH3.4. 定位BUG在源代码中的位置   ATTACH3.5. 查找泄漏的内存   ATTACH3.6. 修改BUG   ATTACH3.7. 隐藏消息   ATTACH4. 保存/载入结果4.1. 保存结果4.2. 载入结 阅读详情

6 仿函数
~~~~~~~~~

6.1 把仿函数类设计为可被用于值传递
===================================
   1. 函数对象类似于函数指针,STL的习惯是当传给函数和从函数返回时函数对象是通过值传递的
   2. 如果函数对象是引用传递,有些STL算法的实现甚至不能编译
   3. 因为函数对象以值传递和返回,你的任务就是确保当那么传递(也就是拷贝)时你的函数对象行为良好.这暗示了两个东西:
      * 你的函数对象应该很小,否则它们的拷贝会很昂贵.
      * 你的函数对象必须单态(也就是非多态)——它们不能用虚函数.那是因为派生类对象以值传递代入基类类型的参数会造成切割问题.
   4. 然而多态对于仿函数来说也是很有用处的,另外如果仿函数需要保留的状态太多也必然照成仿函数过大.这时需要一种曲线的方式.
      这时可以带着你要放进你的仿函数类的数据和/或多态,把它们移到另一个类中。然后给你的仿函数一个指向这个新类的指针。
      通过指针指向一个实现类的方式,结果是仿函数类是小而单态的,但可以访问大量状态而且行为多态。
      最重要的东西是使用这种技术的仿函数类必须支持合理方式的拷贝

6.2 用纯函数做判断式
=====================
   1. 纯函数是返回值只依赖于参数的函数.
   2. STL算法可能会拷贝仿函数,这样可能存在仿函数的多个副本,并且各个副本的状态可能不一致,若仿函数的判断结果与状态有关,则算法产生的结果未知.

6.3 考虑使用函数对象代替函数作为算法的参数
===========================================
   1. 把STL函数对象——化装成函数的对象——传递给算法所产生的代码一般比传递真的函数高效。
   2. 另一个用函数对象代替函数的原因是它们可以帮助你避免细微的语言陷阱。
 

本文出自 “暗日” 博客,请务必保留此出处http://darksun.blog.51cto.com/3874064/1162474

从零开始:使用Labelme完成图像语义分割标注全流程 本文详细介绍了如何使用Labelme工具完成图像语义分割标注的全流程,从环境安装、数据准备到核心标注操作,并重点讲解了如何将标注结果转换为PASCAL VOC等深度学习框架可用的标准数据集格式。文章还提供了关键的避坑指南和高效技巧,帮助初学者快速上手,高效产出高质量的标注数据。 阅读详情

相关推荐

Java后端实战:钉钉互动卡片消息从配置到生产级对接

在企业级消息推送场景中,机器人通知已从简单的文本向富交互演进。其核心原理在于通过可交互的卡片模板,将传统单向通知升级为双向、有状态的微型应用界面,实现了用户无需跳转即可完成操作的技术价值。这广泛应用于审批、任务确认、数据填报等需要即时反馈的业务流程。本文聚焦于钉钉平台,深入剖析其互动卡片消息机制,并基于Java后端,系统讲解如何实现包括安全验签、异步回调与卡片动态更新在内的生产级对接方案,涵盖配置管理、服务降级等工程实践关键点,助力构建稳定高效的企业消息交互服务。

weixin_30617737的博客 436

Jupyter Notebook与Lab安装使用指南:从零搭建交互式开发环境

从交互式开发环境的基本概念出发,介绍Jupyter作为数据科学和机器学习实验的核心工具,如何通过pip或Anaconda快速安装,并理清Notebook与Lab两大界面的区别。同时涵盖虚拟环境绑定、单元格操作、魔法命令等实用技巧,以及常见报错排查方法,帮助读者快速上手并避免踩坑。面向Python数据分析与深度学习调试场景,搭建高效可复现的技术笔记工作流。

weixin_34208185的博客 375

解决用加速器以后,电脑无法连接网络的问题

相信很多朋友也遇到过,用加速器以后,电脑网络直接断了,或者访问外网时打不开的情况解决办法是。

qq_46368050的博客 1万+

虚函数的一种替代方案

虚函数的目的是实现对象的动态绑定,但是有些情况下,可能换一种替代方案,可能会使类的设计更加稳定,易用,下面列出一个我认为很棒的虚函数的替代方案。 使用non-virtual interface(NVI)手法,它以public non-virtual 成员函数包裹较低访问性的virtual函数: class A{ public: int getVal(){ return ...

用通俗的语言讲述严谨的科学方法 782

VisionPro实战:5个工业视觉检测案例详解(附代码片段)

本文详细解析了VisionPro在工业视觉检测中的5个实战案例,包括PCB焊点质量检测、汽车齿轮尺寸测量、药品包装缺陷检测等。通过硬件配置方案和软件算法流程的详细介绍,帮助工程师快速掌握VisionPro的应用技巧,提升工业自动化检测效率。

weixin_29284657的博客 519

Windows环境下IBSIMU的安装

本文主要介绍离子束仿真程序IBSIMU在Windows环境下的安装。

C_Tso的博客 2992

仿函数类:合理处理大对象和多态

仿函数类的设计原则:数据量小,单态  // 用于修改的BPFC的新实现类 template                                    class BPFCImpl :  public unary_function {                private: // 以前在BPFC里的所有数据现在在这里         Widget w;  

wangdamingll的博客 384

Python开发者必看:5分钟搞定Gemini API的3种调用方式(含代码示例)

本文为Python开发者详细介绍了三种高效调用Gemini API的核心方式:基础同步调用、流式调用和聊天模式,并涵盖多模态应用等高级特性。通过清晰的代码示例和实战场景分析,帮助开发者快速掌握Gemini API的集成与优化,提升AI应用开发效率。

g8f9d0s1a2的博客 1122

<Effective STL>笔记--容器

1 容器 ~~~~~~~ 1.1 仔细选择容器 =================    1. C++中的容器回顾       * 标准STL序列容器:         vector、string、deque和list。       * 标准STL关联容器:         set、multiset、map和multimap。       * 非标准序列容器:    

暗日 505

目标检测旋转增强源码带方向

解法1: import cv2 import math import numpy as np import os def get_degree(p1,p0): aaa = math.degrees(math.atan2((p1[1] - p0[1]), (p1[0] - p0[0]))) if aaa < 0: aaa = 360 + aaa aaa = (aaa + 90) if aaa > 360: aa...

jacke121的专栏 2085

【论文硬核拆解】Ctx2Skill:让大模型自己跟自己玩,从上下文里「进化」出可复用技能

论文选择自然语言技能可解释性:技能是人类可读的 Markdown 文件,可以审查、编辑、调试可迁移性:即插即用,从一个模型到另一个模型无需参数访问:对闭源模型友好这比 SKILL0/SkillRL 等参数内化方法更实用,尤其是在商业 API 场景。

步子哥的博客 155

<Effective STL>笔记--关联容器

3 关联容器 ~~~~~~~~~~~ 3.1 了解相等和等价的区别 =========================    1. find对“相同”的定义是相等,基于operator==。set::insert对“相同”的定义是等价,通常基于operator    2. 操作上来说,相等的概念是基于operator==的       等价是基于在一个有序区间中对象值的相对位置

暗日 437

群晖如何安装软路由OpenWrt/iStoreOS作为旁路由(含网络设置、设置密码、还原出厂设置等linux命令ipk包)

openwrt的固件。

XiaoqiangClub的博客 7018

<Effective STL>笔记--算法

5 算法 ~~~~~~~ 5.1 确保目标区间足够大或者在算法执行时可以增加大小 ===================================================    1. 在算法中,要往Container中插入新数据,需要使用插入迭代器(比如,从back_inserter、front_inserter或inserter返回的迭代器之一)。    2. r

暗日 327

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

<Effective STL>笔记--迭代器

4 迭代器 ~~~~~~~~~   现标准STL容器提供了四种不同的迭代器:   * iterator   * const_iterator   * reverse_iterator   * const_reverse_iterator 4.1 尽量用iterator代替const_iterator,reverse_iterator和const_reverse_iterator

暗日 406

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

<Effective STL>笔记--vector和string

2 vector和string ~~~~~~~~~~~~~~~~~ 2.1 尽量使用vector和string来代替动态分配的数组 ===============================================    1. string可能使用了引用计数,这时在多线程环境下你可能发现避免分配和拷贝所节省下的时间都花费在后台并发控制上了.(string本身实现了并发控

暗日 412

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

cppcheck使用指南

cppcheck使用指南Table of Contents1 cppcheck简介2 cppcheck使用3 cppcheck与其他软件的整合3.1 与VisualStudio的配合3.2 与TortoiseSVN配合1 cppcheck简介cppcheck是一个静态代码检查工具,支持c/ c++代码;作为编译器的一种补充检查,cppcheck对产品的源代码执行严格的逻辑检查。执行的检查包括:自动

暗日 1万+

当用fopen读写打开文件时,请使用r+,而不是rw

C++标准中fopen函数的mode只有r,r+,w+,a,a+这几种类别,而没有rw这种类别. 如果尝试对用rw方式打开文件进行写操作,不同的编译器会有不同的处理方式.例如在linux下用gcc4.6.3把rw当成r来处理,会提示bad file descriptor在windows下用dev C++则只是将写文件函数返回失败,但是没有设置errno根据百度百科的说明,还有些编译器则能够把rw识

暗日 5081

为子shell设置变量值的两种方法

为子shell设置变量值有两种方法:一种很常见的方法是将变量export成环境变量,这样该变量就会被带到子shell中去了echo 'echo x=$x' > /tmp/echox chmod +x /tmp/echox x=Hi echo "x不是环境变量的情况下" /tmp/echox echo "x是环境变量的情况下" export x /tmp/echoxx不是环境变量的情况下 x= x是环

暗日 4252

《WebSphereMQ基础教程》MQI笔记

一、MQI的基本数据类型 数据类型 <td width="477" valign="top" style="width:357.7pt;border:solid windowtext 1.0pt; border-left:none

暗日 3171

shell中| ; &的优先级

| 的优先级要高于 ;date; who |wc 2016年 11月 14日 星期一 22:18:38 CST 1 5 45你会发现只有who的结果送到了wc命令. 括号可以用来组合命令(date;who) |wc 2 11 88date与who的结果都送到了wc命令 & 的优先级高于 ;date sleep 5;date & date 201

暗日 2333

《Python网络编程基础》笔记

python网络编程基础                           ================== Author: lujun9972 Date: 2013-03-08 22:29:20 CST Table of Contents ================= 1 客户端与服务器端     1.1 使用inetd或xinetd     1.2

暗日 1764

lua与javascript的相似之处

1. lua中的table,类似于javascript中的Array(数组,同时也是Object,可以当Map用) address={1,2,3} address.Street="Wyman Street" address.Contry="USA" print(address.Street,address["Contry"]  2. 与javascript类似,所有的变量默认为全局变量.lua

暗日 1739

3 curses库窗口(WINDOW)处理

3 curses库窗口(WINDOW)处理 ~~~~~~~~~~~~~~~~~~~~~~~~~~~3.1 什么是窗口 =============== * 窗口是屏幕上的一块区域,在其上面可以进行各种输出及其操作. * 窗口可以位于标准屏幕的任意位置,窗口之间可以相互重叠. * 窗口可以同时包含与它们相关的子窗口,任何在父窗口与子窗口重叠区域的变化会同时影响到他们中的任何一个3.2 窗口操作

暗日 1635

什么样的类可以作为map的键值

在学习C++的map的时候,写了一段代码   #include  #include  using namespace std;  class A {     public:     A(){cout"A created"    A(const A& a){cout"A creat

暗日 1629

图形环境下的shell编程

目录 select dialog tput notify-send kdialog zenityselectselect命令可以创建很简单的菜单,然后获取输入的答案.select命令的格式为:select variable in list do commands done 其中list参数是由空格分隔的文本选项列表,这些列表构成了整个菜单. select命令会将每个列表现实成一个带编号的选项

暗日 1175
上一篇: &lt;Effective STL&gt;笔记--算法
下一篇: &lt;More Effective C++&gt;笔记--基础
darksun9972
博客等级 码龄19年 42粉丝 399原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值