一、 激活重载函数
参数列表光有类型,而没有变量名——因为变量压根儿就不会在函数内用到。为了重载而存在,主要和第五部分结合起来看。
#include<cstddef> //为了引入 typedef int ptrdiff_t
struct input_iterator_tag{ }; //只读标签
struct output_iterator_tag{ }; //只写标签
struct forward_iterator_tag : public input_iterator_tag{ }; //可读写标签
struct bidirectional_iterator_tag : public forward_iterator_tag{ }; //双向标签
struct random_access_iterator_tag : public bidirectional_iterator_tag{ }; //随机标签
二、 迭代器设计
为了本迭代器能够被子类继承,实现为模板。
//迭代器
template<class Category, class T, class Distance = ptrdiff_t,
class Pointer = T*, class Reference = T&>
struct iterator{
typedef Category iterator_category;
typedef T value_type;
typedef Distance