trait技术
来源:互联网 发布:小蜜蜂数控切割机编程 编辑:程序博客网 时间:2024/06/05 21:18
Trait技术
Trait技术的基本概念
思考这样的一个问题,在STL中,一个iterator如果想要获取它所指对象的型别应该怎么办?其实有个很简单的方法,那就是使用C++中的typedef。代码如下:
Template <class T>Struct MyIter {typedef T value_type;// ......}
但是, 如果iterator本身就是个原生的指针,那么如何解决呢? 这就需要用的我们的trait技术了。可以分两步走来解决这个问题。
Step1: “trait” (萃取)类的value_type到trait类中
template <class I>struct iterator_traits {typedef typename I::value_type value_type;// ......}
重新建立一个类有什么作用呢? 其实,主要就是利用c++ template的一个特性:偏特化。
Step2:偏特化支持原生指针
template <class I>struct iterator_traits<I*> {typedef typename I value_type;// ......}
完成以上两步,就可以支持原生指针了。trait技术被大量运用在STL中, 它利用内嵌型别的编程技巧和template的推导功能,增强了c++未能提供关于型别认证方面的能力。
- trait技术
- Trait技术
- trait技术详解
- trait与policy模板技术
- Trait
- trait
- Trait
- trait
- trait
- trait
- 我的C++实践(4):trait与policy模板技术
- 我的C++实践(4):trait与policy模板技术
- 模板Trait 技术与简述template 元编程
- trait,线性化
- c++ trait
- php trait
- Scala:trait
- php trait
- Rational Rose 2003 逆向工程转换C++ / VC++ 6.0源代码成UML类图[转]
- 从追MM谈Java的23种设计模式
- 文件数据分析制作过程【3】
- Flex鼠标移到Label上显示手型useHandCursor
- NASM GCC混合编译16位二进制文件。。。。
- trait技术
- 【转】Rational Rose与PowerDesigner:两款建模工具对比分析比较
- 如何改善你的Flex系统性能(Performance)
- Jolt大奖作品、重磅星级图书尽在十月
- [教程] Android修改源代码控制永不锁屏
- 软件构想:supermemo 云计算方案
- InputStream和OutPutStream类定义的字节输入/输出流常用的方法
- 免费学习大学课程
- ubuntu rar解压缩出现无效的编码的问题