std::iterator和std::iterator_traits
std::iterator
std::iterator
是一个模板类,其声明为:
template<
class Category,
class T,
class Distance = std::ptrdiff_t,
class Pointer = T*,
class Reference = T&
> struct iterator;
std :: iterator是为简化迭代器所需类型的定义而提供的基类。
也就是说当我们写一个模板类时,需要定义自己的迭代器iterator,那么我们可以将std::iterator作为自定义迭代器的基类。
std::iterator
的模板参数:
- Category: 类型为iterator_category ,迭代器的种类。迭代器种类共有5类,参见
c++ primer P365
。分别是
输入(input_iterator)
输出(output_iterator)
前向(forward_iterator)
双向(bidirectional_iterator)
随机访问(random_access_iterator)
。
而表示这些迭代器类型的参数分别用input_iterator_tag
output_iterator_tag
forward_iterator_tag
bidirectional_iterator_tag
random_access_iterator_tag
. - T :