struct input_iterator_tag {};
struct output_iterator_tag {};
struct forward_iterator_tag {};
-struct bidrectional_iterator_tag {};
+struct bidirectional_iterator_tag {};
struct random_access_iterator_tag {};
template <class Category, class T, class Distance = ptrdiff_t, class Pointer = T*, class Reference = T&>