Effective C++ 学习笔记(十三)模板与泛型编程(二)迭代器种类

条款 46 需要类型转换时请为模板定义非成员函数
当我们编写一个class template,而它所提供之“与此相关的”函数支持“所有参数之隐式类型转换”时,请将那些函数定义为“class template” 内部的“friend”函数
定义于class内部的函数都暗自成为inline函数,包括像定义在内部的friend函数

条款 47 请使用traits classes 表现类型信息
Traits classes 使得“类型相关信息”在编译期可用,他们以template和“template 特化”完成实现
整合重载技术后,traits classes 有可能在编译期对类型执行“if else ”测试
5中迭代器分类:
input迭代器一次只能向前移动一步,只能读取它所指向的东西,只能读一次 istream_iterator
output迭代器一次只能向前移动一步,只为了输出,一次只能写一下 ostream_iterator
forward迭代器只可以向前移动,并且可以读写所指物一次以上
bidirectional迭代器可以前后移动
random access 迭代器可以在常量时间内向前或者向后跳动任意距离。

条款 48 认识template元编程
TMP,模板元编程可将工作由运行期移往编译期,因而得以实现早期错误侦测和更高的执行效率
TMP可被用来生成“基于政策选择组合”的客户定制代码,也可用来避免生成对某些特俗类型并不适合的代码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值