Шаг 234.
Библиотека STL. Итераторы STL. Итераторные адаптеры. Написание унифицированных функций для итераторов. Использование типов итераторов

    На этом шаге мы рассмотрим использование типов итераторов.

    Благодаря механизму трактовки итераторов появляется возможность писать унифицированные функции, которые в зависимости от категории итератора используют производные определения типов или выбирают код реализации.

Использование типов итераторов

    Простым примером использования механизма трактовки итераторов является алгоритм, которому необходима временная переменная для хранения элементов. Временная переменная просто объявляется в следующем виде:

  typename std::iterator_traits<T>::value_type tmp;
Здесь Т - тип итератора.

    Другой пример - алгоритм циклического сдвига элементов:

template <class ForwardIterator>
void shif_left (ForwardIterator beg,  ForwardIterator end)
{
  // Временная переменная для первого элемента
  typedef typename
  std::iterator_traits<ForwardIterator>::value_type value_type;
  if (beg != end) {
    // Сохранить значение первого элемента 
    value_type tmp(*beg);
    // Сдвиг следующих значений
    .    .    .    .    .
  }
}

    На следующем шаге мы рассмотрим выбор категории итератора.




Предыдущий шаг Содержание Следующий шаг