泛型参数怎么new_泛型编程,你不知道?(基础篇)

关注“杜明c”,每天进步一点点!

我们学习C++,就常常有人提起泛型编程,什么是泛型编程?我就给大家简单聊一聊。

摘要

-

  • 什么是泛型编程

  • 为什么使用泛型编程

  • 使用方法

什么是泛型编程

泛型编程,简而言之,就是在编程中使用不明确的数据类型,他最大的一个特点就在这个“泛”字,让一套源码适用不同类型的元素。那么这个泛型编程具体什么作用呢?比如我们要我们要写一个求两个数的最大值的函数,一般来说我们都这么实现。

int max(int a, int b){    return a>b?a:b;}

一旦数据的类型发生改变,那么代码就得改一改,这依然很好实现,利用用函数的重载就可以实现。

double max(double a,double b){    return a>b?a:b;}
为什么要使用泛型编程

可是当要求是float型数据的时候,我们就需要添加更多的代码,这无疑增加了很多繁琐的工作,

这时候函数模板就派上了用场。

template <typename T>  //定义一个类型TT max(T a, T b)    //函数定义{    return a>b?a:b;}cout << max<int>(1,5) << endl;//函数调用----out----5

使用一个函数模板就可以实现这个函数,让我们专注于逻辑实现,而不是繁琐的重复工作。

使用方法

除了函数模板之外,我们还可以使用类模板,他们的用法是一样的。

  • 函数模板

  • 类模板

template //函数模板T max(T a, T b)    {    return a>b?a:b;}class base {public:  base(T new_a)  {    a = new_a;  }  T a;  T fun() {    return a;  }};

那么怎么使用呢?其实也很简单。

base<int> a(4);cout << a.fun() << endl;cout << max<int>(1,4) << endl;----out----44

下一章应用篇,说的是使用类模板构造一个vector容器,有兴趣的同学可以看看。

留言区

End

    杜明c

专注C/C++

长按关注839903cf15cddfe6d257e190122559c4.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/409764.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

zabbix入门之添加监控项

zabbix入门之添加监控项 添加一个不带参数的监控项&#xff08;system.cpu.switches&#xff09; 进入“配置”-->“主机”选择某主机的“监控项” 选择创建监控项 键值后边的“选择”提供了大量的键值&#xff0c;带有[ ]的需要定义参数值&#xff0c;这里选择system.cpu.s…

scratch跳一跳游戏脚本_cocos creator制作微信小游戏「跳一跳」

一、游戏的分析(之前没有接触过小游戏&#xff0c;制作的思维还停留在大型ARPG游戏大家共同协作的想法里&#xff0c;但是小游戏讲究小而全&#xff0c;大部分时间是一个人独立开发&#xff0c;所以需要迫使自己养成看到小游戏先拆分细化的思想)二、一些必要的参数台阶参数1: 设…

中boxplot函数的参数设置_如何在Python中生成图形和图表

在本章中&#xff0c;我们将学习如何在Python中生成图形和图表&#xff0c;同时将使用函数和面向对象的方法来可视化数据。Python中常用的一些可视化数据包括以下几种。Matplotlib。Seaborn。ggplot。Geoplotlib。Bokeh。Plotly。在本章中将使用Matplotlib可视化数据包。此外&a…

zabbix入门之监控MySQL

zabbix入门之监控MySQL 这里使用的是zabbix官方自带的MySQL监控模板。 首先确保在被监控主机安装zabbix-agent、zabbix-sender&#xff0c;并且将主机加入监控节点。具体操作请看zabbix添加主机&#xff1a;https://www.cnblogs.com/Smbands/p/11593593.html 修改zabbix自带的M…

css清除浮动的几种方法_CSS 分享几种传统布局方法[上]

本章主要探讨 HTML5 中 CSS 早期所使用的传统布局&#xff0c;很多情况下&#xff0c;这些布局方式还是非常有用的。一&#xff0e;布局模型在早期没有平板和智能手机等移动设备大行其道的时期&#xff0c;Web 页面的设计主要是面向PC 端电脑分辨率展开的。这种分辨率比例比较单…

1-7docke的网络模式

1、Bridge模式bridge 模式是 docker 的默认⽹络模式&#xff0c;不写 –net 参数&#xff0c;就是 bridge 模式。比如使⽤ docker run - p 时工作模式从网上找了一个&#xff0c;如下 例子&#xff1a; run -it -d --name test1 --netbridge centos:v1 bashrun -it -d --name t…

分页的limit_分页场景(limit,offset)为什么会慢

链接:http://t.cn/AidABz08从一个问题说起五年前在腾讯的时候&#xff0c;发现分页场景下&#xff0c;mysql请求速度非常慢。数据量只有10w的情况下&#xff0c;select xx from 单机大概2&#xff0c;3秒。我就问我师父为什么&#xff0c;他反问“索引场景&#xff0c;mysql中获…

Android游戏开发基础part3--Paint 画笔

游戏开发基础part3--Paint 画笔 Paint画笔是绘图的辅助类&#xff0c;一般它是作为画布的参数来实现相应的效果&#xff0c;Paint类中包含文字与位图的样式、颜色等属性信息。Paint的常用方法如下&#xff1a; 1.setAntiAlias(boolean aa) 作用&#xff1a;设置画笔是否无锯齿 …

jvm 参数_6个提高性能的JVM参数

截止到2020年五月&#xff0c;JVM中仅仅只是关于垃圾回收和内存相关的参数就已经超过600个。如果算上其他方面的参数&#xff0c;JVM相关的总参数能轻松超过1000个。参数太多了&#xff0c;弄得人很懵逼。在这边文章中&#xff0c;我们只选取了7个比较重要&#xff0c;且有用的…

zabbix入门之定义触发器

zabbix入门之定义触发器 触发器的概念 触发器的定义&#xff1a;界定某特定的item 采集到数据的非合理区间或非合理状态。通常为逻辑表达式。 逻辑表达式(阈值)&#xff1a;通常用于定义数据的不合理区间&#xff0c;其结果如下&#xff1a; O K &#xff08;符合条件&#xff…

mybatis字符串转成数字_Python字符串三种格式化输出

字符串格式化输出是python非常重要的基础语法&#xff0c;今天就把三种格式化输出做一个简单的总结&#xff0c;希望对大家有帮助。格式化输出&#xff1a;内容按照一定格式要求进行输出。1.使用占位符%输出python2.6版本之前&#xff0c;使用%格式化字符串沿用的是C语言的输出…

eclipse dorado plugin

http://lindows.iteye.com/blog/224004 下载中心 http://www.bstek.com/downloadcenter.htm dorado debug shutcut page time:CtrlShiftF12 bstekIDE Eclipse插件扩展点应用介绍 http://macrochen.iteye.com/blog/138625 BstekIDE_1.2.2_Installer.jar http://www.bstek.com/do…

三个不等_2道真题,讲透「基本不等式」的使用原则 | 真题精讲-11

「不等式」和「最值」之间有着非常天然的强联系&#xff1b;基本不等式有3个非常明显的形式特征&#xff1b;知识点的用法比知识点本身更重要。先发福利&#xff1a;这里有6场「高考数学」系列Live的讲义&#xff0c;全拿去&#xff0c;送给你——《高考数学&#xff1a;免费送…

ajax success function_Django:AJAX(二)

3|0jQuery实现的AJAX最基本的jQuery发送AJAX请求示例&#xff1a;<!DOCTYPE html><html lang"en"> <head> <meta charset"UTF-8"> <title>Title</title> <meta name"viewport" content"widthdevice…

无废话ExtJs 入门教程十[单选组:RadioGroup、复选组:CheckBoxGroup]

继上一节内容&#xff0c;我们在表单里加了个一个单选组&#xff0c;一个复选组: 1.代码如下&#xff1a; 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">2 <ht…

python抢票代码_GitHub标星超12K,抢票神器大更新,支持候补

掐指一算&#xff0c;距离国庆黄金周还有半个月的时间!你出行的车票都抢到了吗?图片来自 pexels根据国务院办公厅发布的关于 2019 年部分节假日安排的通知&#xff0c;国庆放假安排是&#xff1a;10 月 1 日至 7 日。想要十一出行的小伙伴们&#xff0c;想必前几天刚经历了一波…

python 开发板 播放音乐_MicroPython开发板:TPYBoard v102 播放音乐实例

0x00前言 前段时间看到TPYBoard的技术交流群&#xff08;群号&#xff1a;157816561&#xff09;里有人问关于TPYBoard播放音乐的问题。最近抽空看了一下文档介绍&#xff0c;着手做了个实验。 0x01实验器材 TPYBoard v102 开发板 1块 耳机或音响 1个 杜邦线 若干 0x02前期准备…

[html] 你知道什么是粘性布局吗?

[html] 你知道什么是粘性布局吗&#xff1f; 中文大概意思&#xff1a; 对象在常态时遵循常规流。它就像是relative和fixed的合体&#xff0c;当在屏幕中时按常规流排版&#xff0c;当卷动到屏幕外时则表现如fixed。该属性的表现是现实中你见到的吸附效果。 个人简介 我是歌…

kafka streams实战 pdf_spring框架实战口试材料

Spring框架自诞生倚赖从来备受开发者青睐&#xff0c;有人亲切的称之为&#xff1a;Spring 百口桶。它包SpringMVC、SpringBoot、Spring Cloud、Spring Data等处理方案。好多研发职员把spring看作心目中最佳的java项目&#xff0c;没有之一。Spring系列包涵非常多的项目&#x…

jquery日期插件_AngularJS 日期时间选择组件(附详细使用方法)

插件简介AngularJS是一款目前非常火的JavaScript脚本库&#xff0c;应用范围十分广阔。今天给大家分享一款基于AngularJS和jQuery的日期时间选择组件&#xff0c;和别的日期选择插件一样&#xff0c;它同样支持年月日的快速定位。另外这款AngularJS日期选择组件还支持时间的选择…