C++模板进阶

在这里插入图片描述

模板的全特化

在使用模板的时候,可能会存在以下问题。
在这里插入图片描述

我们若传入指针,则可能导致比较的结果不符合我们的预期。

此时我们就需要使用全特化模板了。
所谓全特化模板,就是将所有模板的参数指定为固定的类型,在我们使用该固定类型调用函数或类时,就会调用全特化模板。

在我们调用某类或函数时,若普通模板和特化模板都满足,则优先调用特化模板。
对于函数来说,只能全特化,而不能偏特化。
类既可以全特化,也可以偏特化。

在这里插入图片描述

模板的偏特化

我们在特化模板时,不一定要将模板参数全部特化为固定类型。
在这里插入图片描述

上图的特化表现为范围特化,是缩小了模板的范围,如const引用指针等等。

也可以只特化模板的一部分。

上图的特化表现为数量偏特化。

适配器模式解析

模板传输的是类型,而自定义类型也是类型,当我们要实现某个类时,这个类的某些接口就可以使用该模板的接口来替代,这就是适配器。
如STL中的栈的实现。
在这里插入图片描述
在比如反向迭代器的实现。
在这里插入图片描述

  • 13
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值