STL中的traits编程技巧

STL中的traits编程技巧,初次接触,觉得真心不好理解。

下面是一篇很好的博客:http://blog.csdn.net/shudou/article/details/10270971


总的来说,在STL中是由容器(container)来负责设计适当的迭代器(iterator),由迭代器(iterator)来负责设计适当的迭代器属性。正因为这一点才使得容器和算法可以完全分离开来,通过迭代器提供的接口来访问容器的内部元素。

STL的中心思想在于:将容器(container)与算法(algorithm)分开,彼此独立设计,最后再以一粘合剂(迭代器,iterator)将他们撮合在一起。容器与算法的特化,从技术上比不难,C++的类模版和函数模版可以分别达到目标,真正设计出两者之间粘合的迭代器,才是关键。

traits编程技巧[注1]大量运用于STL的实现品中,它利用“内嵌型别”的编程技巧[注2]与C++编译器的template参数推导功能,增强C++未能提供的关于型别方面的能力,弥补了C++不是强型别的遗憾。

[注1]算法利用traits编程技巧获得迭代器的属性。
[注2]具体的来说,traits就是通过 定义一些结构体或类,并利用模板类特化和偏特化的能力,给类型赋予一些特性,这些特性根据类型的不同而异。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值