首页 > 其他分享 >4月12日复习,仿函数,非类型模板参数,模板的特化

4月12日复习,仿函数,非类型模板参数,模板的特化

时间:2023-04-12 23:35:44浏览次数:62  
标签:12 复习 大于号 算法 参数 小于号 模板 函数

仿函数的学习:之前在实现优先级队列时在模板那里多传一个参数可以实现直接堆优先级的调整,因为设置大数优先还是小数优先,只是建大堆还是建小堆和相关算法的问题,而大堆算法与小堆算法的不同只是大于小于号的不同,若是仅仅因为这个就重新写一个相似的代码未免有点太冗余了,所以可以引入一个类这个类代替运算符的功能,若算法中需要改变运算符来实现算法的不同要求,直接改变传入的模板达到预期的效果,

对仿函数可以这样理解,定义一个代替大于号的类与都=代替小于号的类,在用到的类的模板部分增加一个参数用来储存仿函数的类,当需要用到仿函数的时候,定义一个模板变量com,用com实现的函数起大于号的作用来代替大于号,这样就完成了仿函数的使用,当算法需要使用小于号时,将类名greater换成less就完成了算法中小于号的替换。STL库中的sort快排函数时就有多传一个参数来决定是排升序还是排降序的效果,这个也是仿函数的效果。

非类型模板参数:在使用模板时不仅可以在参数部分写类型名也可以写非类型,不过这个非类型一般为常量无法改变,这个再类Array中用到过:

这行代码运行结果就会一次生成两个空间大小不同的数组;

模板的特化:

顾名思义,特化就是指特殊情况特殊处理,比如定义一个判断两数相等的模板函数,但是这个函数只能判断自然数,若传参是字符串的话就不能达到判断的效果,于是可以特殊加一个同名的模板函数来处理这种特殊情况:

这样就可以用IsEqual这个函数同时处理自然数和字符串了,同时自定义类型也可以特殊处理

标签:12,复习,大于号,算法,参数,小于号,模板,函数
From: https://www.cnblogs.com/qjwxlj/p/17311871.html

相关文章

  • 4.12会议纪要
    确立了今天的目标:对界面的雏形进行完善,对于具体Activity的功能进行操作对于信息录入进行操作 ......
  • 每日总结2023-04-12
    今天对项目目前进度做了总结,并针对当前的任务做了思路说明以及调整,在每日站立会议中,我充分了解了目前项目所需要完成的部分。今天针对这些内容做出了调整。1.新增数据库,内容为用户购买的商品,主键为商家绑定信息,根据这些信息可以算出每日总收益。2.绘制出补货的具体页面。3.写......
  • 2023.4.12.汇报.pptx
    6月份汇报想法  8月份写论文 ==========================================================           ......
  • NumPy 秘籍中文第二版:11~12
    原文:NumPyCookbook-SecondEdition协议:CCBY-NC-SA4.0译者:飞龙十一、最新最强的NumPy在本章中,我们涵盖以下秘籍:用at()方法用花式索引代替ufuncs通过使用partition()函数选择快速中位数进行部分排序使用nanmean(),nanvar()和nanstd()函数跳过NaN使用full()和full_......
  • 2023.4.12——软件工程日报
    所花时间(包括上课):4h代码量(行):0行博客量(篇):1篇今天,上午学习,下午学习。我了解到的知识点:1.学习计算机网络;2.了解了一些javaweb的知识;......
  • 4月12号总结
    今天讨论了如何系统地完成项目,1.数据清洗:对表格中的数据进行清洗、去重、格式化等操作,确保数据的准确性和一致性。2.数据标准化:对表格中的数据进行标准化处理,使其符合特定的数据模型或规范。3.数据抽取:使用自然语言处理、OCR等技术将非结构化数据(如PDF、图片)转换为结构化......
  • 12号敲代码1小时
    实验五:实验2:#include<iostream>#include<string>usingnamespacestd;classvector3D{private:floatx,y,z;public:vector3D(floata=0,floatb=0,floatc=0):x(a),y(b),z(c){}friendistream&operator>>(istream&,vector3D&);frie......
  • 2023.4.12
    //c++语言程序设计第二章习题//2-4#include<iostream>usingnamespacestd;intmain(){constdoublePI=3.1416;doublea;a=PI;cout<<"a的值为:"<<a<<endl;return0;}1//c++语言程序设计第二章习题2//2-113#include......
  • 4月12日数据结构,线索二叉树,哈夫曼树,哈夫曼编码
    线索二叉树与以往的二叉树略有不同,普通二叉树在访问到叶子结点的时候会返回,往往递归的效率并不高,有时还可能有栈溢出的风险,但是线索二叉树在访问到叶子结点的时候因为没有左右孩子,所以他左边存放他前驱的指针。右边存放后继的指针,是指从一个非线性结构变成了一个可以线性访问的的......
  • 2023.4.12
    将变量进行循环利用使得程序更加简单有序,运行报错时也更方便查找错误 ......