STL源码-iterator traits编程技法

  • Post author:
  • Post category:其他




  1. typedef




    typename


    iterator_traits<_Iter>::value_type  value _type;





1:简介typename





typename iterator_traits<_Iter>::value_type



是类型名;但是感到困惑的是这里为什么要使用


typename


关键字?


typename





C++


类模板或者函数模板中经常使用的关键字,此时作用和


class


相同,只是定义模板参数



typename



在下面情况下禁止使用:


  1. 模板定义之外,即typename只能用于模板的定义中

  2. 非限定类型,比如


    int,vector<int>


    之类

  3. 基类列表中,比如


    template <class T> class C1 : T::InnerType


    不能在


    T::InnerType


    前面加


    typename

  4. 构造函数的初始化列表中






如果类型是依赖于模板参数的限定名,那么在它之前必须加





typename


(除非是基类列表,或者在类的初始化成员列表中)。




2:

Traits


编程技术







STL


编程中,容器和算法是独立设计的,即数据结构和算法是独立设计的,连接容器和算法的桥梁就是迭代器了,迭代器使其独立设计成为可能。


Traits


编程技术是

STL

中最重要的编程技术,


Traits

可以获取一个类型的相关信息。






若我们要知道用户自定义类型的函数返回值类型,我们可以使用内嵌型别技术就可以知道返回值的类型;看下面程序:




  1. templates <


    class


    T>



  2. struct


    Iterator


  3. {


  4. typedef



版权声明:本文为xietingcandice原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。