第三章 迭代器与trait编程技巧
来源:互联网 发布:python自动化性能测试 编辑:程序博客网 时间:2024/06/06 13:58
Trait所扮演的角色是特性萃取机的角色,萃取各个迭代器的特性,为了使trait特性有效运作,每一个迭代器必须遵循约定,自行以内嵌型别定义的方式定义出相应型别。根据编译器利用function template的参数推导机制,确定型别。(利用该机制解决参数返回值的型别定义)
template<class Category,class T , class Distance=ptrdiff_t,class Pointer=T*,class Reference=T&>
struct iterator{ //使用可以看后面的Vector
typedef Category iterator_ategory;
typedef T value_type;
typedef Distance difference_type;
typedef Pointer pointer;
typedef Reference reference;
};
template<class Iterator>
struct iterator_traits{ //萃取特性 定义结构方便使用
typedef typename Iterator:: iterator_ategory iterator_ategory;
typedef typename Iterator::value_type value_type;
typedef typename Iterator:: difference_type difference_type;
typedef typename Iterator:: pointer pointer;
typedef typename Iterator::reference reference;
};
typename 用意在于告诉编译器这是一个型别,因为在此之前编译器并不知道iterator<T>::value_type代表的是一个型别或者是member function或者是一个data member.
使用方法:
Iterator_traits<int>::value_type ......
由于并非是所有迭代器都是class type,原生指针就不是,就有偏特化版本引出
template<T>
struct iterator_traits<T*>{
typedef radom_access_iterator_tag iterator_ategory;
typedef T value_type;
typedef ptrdiff_t difference_type;
typedef const T* pointer;
typedef const T& reference;
};
template<T>
struct iterator_traits<T*>{
typedef radom_access_iterator_tag iterator_ategory;
typedef T value_type;
typedef ptrdiff_t difference_type;
typedef T* pointer;
typedef T& reference;
};
迭代器的五种分类:
Input Iterator,Output Iterator,Forward Iterator ,Bidirection Iterator,Random Access Iterator;
- 第三章 迭代器与trait编程技巧
- STL学习之迭代器和trait编程技巧
- C++模板之trait与模板技巧
- 泛型程序设计之 Trait 与 Policy 技巧初探
- 模板Trait 技术与简述template 元编程
- trait编程技法
- 《stl源码剖析》-- 迭代器概念和trait编程技法
- Trait
- trait
- Trait
- trait
- trait
- trait
- trait与policy模板技术
- 迭代器(iterators)与traits编程技巧
- 理解模板编程中的Trait和Mataprogram
- (zz)Scala编程中的trait特性
- 第十章:trait(特质)
- gcc 编译时的 error trying to exec 'cc1plus': execvp: 没有那个文件或目录问题
- Android 的窗口管理系统 (View, Canvas, WindowManager)
- 第17章 二进制计数器递增代码
- 循环队列
- android 中的一些小case
- 第三章 迭代器与trait编程技巧
- Camera driver&V4L2驱动架构介绍
- IOS自动打包
- 括号匹配
- 纪录:[NSNull null]的一个用法
- 数据的逻辑结构和物理结构(存储结构)
- POJ 1185 炮兵阵地
- Android问题集锦之二十四:Java编译器版本问题
- 黑马程序员——OC---OC特有语法01