在STL中,容器跟算法是分开设计的,算法是通过迭代器来对容器进行操作的。

在算法运用迭代器的时候,可能会用到其相应的型别,例如返回值为容器中元素的型别,又或者说根据迭代器的类型来选择更好的算法等等。

为了实现这一点,还有为了兼容内置型别的迭代器(vector迭代器直接使用原生pointer),STL使用了traits技法,用于提取迭代器的特性(相应的型别)。

 

1.首先在iterator中typedef相应的型别

 1 // 这是迭代器的基类 所有迭代器必须定义这5种型别
 2 template<class Category, class T, class Distance = ptrdiff_t,
 3 class Pointer = T*, class Reference = T&>
 4 struct iterator {
 5     typedef Category iterator_category;
 6     typedef T value_type;
 7     typedef Distance difference_type;
 8     typedef Pointer pointer;
 9     typedef Reference reference;
10 };
View Code

相关文章:

  • 2022-01-04
  • 2021-08-02
  • 2021-11-26
  • 2021-06-07
猜你喜欢
  • 2022-12-23
  • 2021-06-08
  • 2022-12-23
  • 2021-12-02
  • 2022-01-26
  • 2021-11-29
  • 2022-01-22
相关资源
相似解决方案