Spec-Zone .ru
спецификации, руководства, описания, API
ADC домой > Ссылочная библиотека> Ссылка> Дарвин> Разное пространство пользователя ссылка API

 


stl_iterator.h

Введение

Это - внутренний заголовочный файл, включенный другими заголовками библиотеки. Вы не должны пытаться использовать его непосредственно.

Этот файл реализует reverse_iterator, back_insert_iterator, front_insert_iterator, insert_iterator, __ normal_iterator, и их функции поддержки и перегруженные операторы.



Классы

back_insert_iterator
front_insert_iterator
insert_iterator


Функции

back_inserter
front_inserter
вставка
оператор ==
оператор reverse_iterator

back_inserter


template<typename _Container> inline back_insert_iterator<_Container> back_inserter(
    _Container& __x) 
Параметры
x
Контейнер произвольного типа.
Возвращаемое значение

Экземпляр back_insert_iterator, работающего над @p x.

Эта функция обертки помогает в создании back_insert_iterator экземплярам. Введение имени %iterator требует знания точного полного типа контейнера, который может быть утомительным и препятствует универсальному программированию. Используя эту функцию позволяет Вам использовать в своих интересах автоматическое шаблонное удержание параметра, заставляя компилятор соответствовать корректные типы для Вас.


front_inserter


template<typename _Container> inline front_insert_iterator<_Container> front_inserter(
    _Container& __x) 
Параметры
x
Контейнер произвольного типа.
Возвращаемое значение

Экземпляр front_insert_iterator, работающего над @p x.

Эта функция обертки помогает в создании front_insert_iterator экземплярам. Введение имени %iterator требует знания точного полного типа контейнера, который может быть утомительным и препятствует универсальному программированию. Используя эту функцию позволяет Вам использовать в своих интересах автоматическое шаблонное удержание параметра, заставляя компилятор соответствовать корректные типы для Вас.


вставка


template<typename _Container, typename _Iterator> inline insert_iterator<_Container> inserter(
    _Container& __x,
    _Iterator __i) 
Параметры
x
Контейнер произвольного типа.
Возвращаемое значение

Экземпляр insert_iterator, работающего над @p x.

Эта функция обертки помогает в создании insert_iterator экземплярам. Введение имени %iterator требует знания точного полного типа контейнера, который может быть утомительным и препятствует универсальному программированию. Используя эту функцию позволяет Вам использовать в своих интересах автоматическое шаблонное удержание параметра, заставляя компилятор соответствовать корректные типы для Вас.


оператор ==


template<typename _Iterator> inline bool operator==(
    const reverse_iterator<_Iterator>& __x, 
    const reverse_iterator<_Iterator>& __y) 
Параметры
x
%reverse_iterator.
y
%reverse_iterator.
Возвращаемое значение

Простой bool.

Обратные итераторы передают много операций своей базовой основе () итераторы. Другие реализованы с точки зрения друг друга.


оператор reverse_iterator


template<typename _Iterator> class reverse_iterator : public iterator<typename iterator_traits<_Iterator>::iterator_category, typename iterator_traits<_Iterator>::value_type, typename iterator_traits<_Iterator>::difference_type, typename iterator_traits<_Iterator>::pointer, typename iterator_traits<_Iterator>::reference> { 
        protected: _Iterator current;  
    public: typedef _Iterator iterator_type;  typedef typename iterator_traits<_Iterator>::difference_type difference_type;  typedef typename iterator_traits<_Iterator>::reference reference;  
typedef typename iterator_traits<_Iterator>::pointer pointer;   
public: /**
The default constructor default-initializes member @p current.
If it is a pointer, that means it is zero-initialized.
    */
// _GLIBCXX_RESOLVE_LIB_DEFECTS 
// 235 No specification of default ctor for reverse_iterator 
reverse_iterator() : current() ;  /**
This %iterator will move in the opposite direction that @p x does.
    */
explicit reverse_iterator(
    iterator_type __x) : current(
    __x) ;  /**
The copy constructor is normal.
    */
reverse_iterator(
    const reverse_iterator& __x) : current(
    __x.current) ;  /**
A reverse_iterator across other types can be copied in the normal
fashion.
    */
template<typename _Iter> reverse_iterator(
    const reverse_iterator<_Iter>& __x) : current(
    __x.base()) ;  /**
@return @c current, the %iterator used for underlying work.
    */
iterator_type base() const   /**
@return TODO

@doctodo
    */
reference operator*() const   /**
@return TODO

@doctodo
    */
pointer operator->() const return &(
    operator*());  
}  /**
@return TODO

@doctodo
    */
reverse_iterator& operator++() ;
Обсуждение

«Итераторы двунаправленного и произвольного доступа имеют соответствующий реверс %iterator адаптеры, выполняющие итерации через структуру данных в противоположном направлении. У них есть те же подписи как соответствующие итераторы. Фундаментальное отношение между реверсом %iterator и его соответствующим %iterator @c я установлен идентификационными данными: @code и* (reverse_iterator (i)) == и* (я - 1) @endcode

Это отображение диктует факт, что, в то время как всегда существует указатель мимо конца массива, не могло бы быть допустимого указателя перед началом массива». [24.4.1]/1,2

Обратные итераторы могут быть хитрыми и удивительными сначала. Их семантика целесообразна, однако, и ловкость является побочным эффектом требования, чтобы итераторы были безопасны.

Последнее обновление: 20.06.2006