c++的模板和queue、priority_queue

一、模板是c++支持参数多态化的工具,使用模板可以使用户为类或者函数声明一种模式,使得类中的某些数据成员或者成员函数的参数、返回值取得 任意类型。
注意:模板的声明或定义只能在全局,命名空间或类范围内进行。即不能在局部范围,函数内进行,比如不能在main函数中声明或定义一个模板。
模板通常有两种形式:函数模板和类模板
1.函数模板
函数模板格式(template和class为关键字,class也用typename替代,效果一样):
在这里插入图片描述
<>内指定的参数类型可以选择性地作为函数的参数列表。
例子:
在这里插入图片描述
注意:对于函数模板而言不存在 h(int,int) 这样的调用,不能在函数调用的参数中指定模板形参的类型,对函数模板的调用应使用实参推演来进行,即只能进行 h(2,3) 这样的调用,或者int a, b; h(a,b)。
2.类模板
在这里插入图片描述
<>中定义的类型可以用于类中定义成员变量和成员函数。
例:
在这里插入图片描述
注意:类模板定义对象时需要指明类型,这是和函数模板的使用有区别的地方。
也可以指定模板形参的默认类型:
在这里插入图片描述
上述例子的模板形参是类型形参,此外还有非类型形参
非类型形参例子:
在这里插入图片描述
二、queue和priority_queue
queue 就是“队列”。队列是先进先出的,和排队类似。队头的访问和删除操作只能在队头进行,添加操作只能在队尾进行。不能访问队列中间的元素。
queue 可以用 list 和 deque 实现,默认情况下用 deque 实现。queue 同样也有和 stack 类似的 push、pop、top 函数。区别在于,queue 的 push 发生在队尾,pop 和 top 发生在队头。
在这里插入图片描述

priority_queue 是“优先队列”。它和普通队列的区别在于,优先队列的队头元素总是最大的——即执行 pop 操作时,删除的总是最大的元素;执行 top 操作时,返回的是最大元素的引用。
在这里插入图片描述
priority_queue 的第三个类型参数可以用来指定排序规则。
例子:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值