Spec-Zone .ru
спецификации, руководства, описания, API
|
ADC домой > Ссылочная библиотека> Ссылка> Дарвин> Разное пространство пользователя ссылка API
|
stl_iterator.h |
Это - внутренний заголовочный файл, включенный другими заголовками библиотеки. Вы не должны пытаться использовать его непосредственно.
Этот файл реализует reverse_iterator, back_insert_iterator, front_insert_iterator, insert_iterator, __ normal_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
y
Простой 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