|  | 
|      | 
|  | 
| Class iterator_rangeBoost , Chapter 1. Range 2.0 , Utilities
 Намерение класса  Если аргумент шаблона не является моделью Forward Traversal Iterator, можно использовать подмножество интерфейса. В частности,  Напомним, что многие построенные по умолчанию итераторы являются singular и, следовательно, могут быть только назначены, но не сопоставлены или увеличены или что-либо еще. Однако, если вы создаете построенный по умолчанию  SynopsisБазовая функциональность находится в файле заголовка  
          The  namespace boost { template< class ForwardTraversalIterator > class iterator_range { public: // Forward Range types typedef ForwardTraversalIterator iterator; typedef ForwardTraversalIterator const_iterator; typedef iterator_difference<iterator>::type difference_type; public: // construction, assignment template< class ForwardTraversalIterator2 > iterator_range( ForwardTraversalIterator2 Begin, ForwardTraversalIterator2 End ); template< class ForwardRange > iterator_range( ForwardRange& r ); template< class ForwardRange > iterator_range( const ForwardRange& r ); template< class ForwardRange > iterator_range& operator=( ForwardRange& r ); template< class ForwardRange > iterator_range& operator=( const ForwardRange& r ); public: // Forward Range functions iterator begin() const; iterator end() const; public: // convenience operator unspecified_bool_type() const; bool equal( const iterator_range& ) const; value_type& front() const; void drop_front(); void drop_front(difference_type n); bool empty() const; iterator_range& advance_begin(difference_type n); iterator_range& advance_end(difference_type n); // for Bidirectional: value_type& back() const; void drop_back(); void drop_back(difference_type n); // for Random Access only: reference operator[]( difference_type at ) const; value_type operator()( difference_type at ) const; size_type size() const; }; // stream output template< class ForwardTraversalIterator, class T, class Traits > std::basic_ostream<T,Traits>& operator<<( std::basic_ostream<T,Traits>& Os, const iterator_range<ForwardTraversalIterator>& r ); // comparison template< class ForwardTraversalIterator, class ForwardTraversalIterator2 > bool operator==( const iterator_range<ForwardTraversalIterator>& l, const iterator_range<ForwardTraversalIterator2>& r ); template< class ForwardTraversalIterator, class ForwardRange > bool operator==( const iterator_range<ForwardTraversalIterator>& l, const ForwardRange& r ); template< class ForwardTraversalIterator, class ForwardRange > bool operator==( const ForwardRange& l, const iterator_range<ForwardTraversalIterator>& r ); template< class ForwardTraversalIterator, class ForwardTraversalIterator2 > bool operator!=( const iterator_range<ForwardTraversalIterator>& l, const iterator_range<ForwardTraversalIterator2>& r ); template< class ForwardTraversalIterator, class ForwardRange > bool operator!=( const iterator_range<ForwardTraversalIterator>& l, const ForwardRange& r ); template< class ForwardTraversalIterator, class ForwardRange > bool operator!=( const ForwardRange& l, const iterator_range<ForwardTraversalIterator>& r ); template< class ForwardTraversalIterator, class ForwardTraversalIterator2 > bool operator<( const iterator_range<ForwardTraversalIterator>& l, const iterator_range<ForwardTraversalIterator2>& r ); template< class ForwardTraversalIterator, class ForwardRange > bool operator<( const iterator_range<ForwardTraversalIterator>& l, const ForwardRange& r ); template< class ForwardTraversalIterator, class ForwardRange > bool operator<( const ForwardRange& l, const iterator_range<ForwardTraversalIterator>& r ); // external construction template< class ForwardTraversalIterator > iterator_range< ForwardTraversalIterator > make_iterator_range( ForwardTraversalIterator Begin, ForwardTraversalIterator End ); // Make an iterator_range [first, boost::next(first, n) ) template< class ForwardTraversalIterator, class Integer > iterator_range< ForwardTraversalIterator > make_iterator_range_n( ForwardTraversalIterator first, Integer n ); template< class ForwardRange > iterator_range< typename range_iterator<ForwardRange>::type > make_iterator_range( ForwardRange& r ); template< class ForwardRange > iterator_range< typename range_iterator<const ForwardRange>::type > make_iterator_range( const ForwardRange& r ); template< class Range > iterator_range< typename range_iterator<Range>::type > make_iterator_range( Range& r, typename range_difference<Range>::type advance_begin, typename range_difference<Range>::type advance_end ); template< class Range > iterator_range< typename range_iterator<const Range>::type > make_iterator_range( const Range& r, typename range_difference<const Range>::type advance_begin, typename range_difference<const Range>::type advance_end ); // convenience template< class Sequence, class ForwardRange > Sequence copy_range( const ForwardRange& r ); } // namespace 'boost' Если экземпляр  Стоит отметить, что шаблонные конструкторы и операторы присваивания позволяют конвертировать из  Details member functions
           
           Details functions
           
 
           
           iterator_range make_iterator_range( Range& r, typename range_difference<Range>::type advance_begin, typename range_difference<Range>::type advance_end ); iterator new_begin = begin( r ), iterator new_end = end( r ); std::advance( new_begin, advance_begin ); std::advance( new_end, advance_end ); return make_iterator_range( new_begin, new_end ); 
           
 Статья Class iterator_range раздела Chapter 1. Range 2.0 Utilities может быть полезна для разработчиков на c++ и boost. 
 | ||||||||||||
|  ©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 | ||||||||||||