Boost C++ Libraries Home Libraries People FAQ More



Class iterator_range
Class sub_range
Function join

Having an abstraction that encapsulates a pair of iterators is very useful. The standard library uses std::pair in some circumstances, but that class is cumbersome to use because we need to specify two template arguments, and for all range algorithm purposes we must enforce the two template arguments to be the same. Moreover, std::pair<iterator,iterator> is hardly self-documenting whereas more domain specific class names are. Therefore these two classes are provided:

The iterator_range class is templated on an Forward Traversal Iterator and should be used whenever fairly general code is needed. The sub_range class is templated on an Forward Range and it is less general, but a bit easier to use since its template argument is easier to specify. The biggest difference is, however, that a sub_range can propagate constness because it knows what a corresponding const_iterator is.

Both classes can be used as ranges since they implement the minimal interface required for this to work automatically.