14 #ifndef ITERATOR_TYPES_H    15 #define ITERATOR_TYPES_H    24 template<
class pair_iterator>
    27   typedef typename pair_iterator::value_type::first_type value_type;
    32   value_type operator *() {
    33     return pair_iterator::operator *().first;
    42 template<
class pair_iterator>
    45   typedef typename pair_iterator::value_type::second_type value_type;
    50   value_type operator *() {
    51     return pair_iterator::operator *().second;
    59 template<
class base_iterator, 
class new_type>
    62   typedef new_type value_type;
    67   value_type operator *() {
    68     return (new_type)base_iterator::operator *();
 This is an iterator adaptor that converts any iterator that returns a pair (e.g.
This is an iterator adaptor that converts any iterator that returns a pair (e.g.
This is an iterator adaptor that explicitly typecasts each value returned by the base iterator to the...