[/ Copyright 2010 Neil Groves Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) /] [section:indexed indexed] [table [[Syntax] [Code]] [[Pipe] [`rng | boost::adaptors::indexed()`]] [[Pipe] [`rng | boost::adaptors::indexed(start_index)`]] [[Function] [`boost::adaptors::index(rng)`]] [[Function] [`boost::adaptors::index(rng, start_index)`]] ] [heading Description] The index within each returned `boost::range::index_value` is equal to `start_index` + the offset of the element from the beginning of the range. In the versions of the functions that omit `start_index` the starting index is taken to be `0`. * [*Purpose:] Adapt `rng` to return elements that have the corresponding value from `rng` and a numeric index. * [*Returns:] A range adapted to return both the element and the associated index. The returned range has elements of type: `` boost::range::index_value< typename boost::range_reference::type, typename boost::range_difference::type > `` The synopsis of index_value is as follows: `` template class index_value : public boost::tuple { public: typedef ...unspecified... index_type; typedef ...unspecified... const_index_type; typedef ...unspecified... value_type; typedef ...unspecified... const_value_type; // ...unspecified... constructors index_type index(); const_index_type index() const; value_type value(); const_value_type value() const; }; `` * [*Range Category:] __single_pass_range__ * [*Range Return Type:] `boost::indexed_range` * [*Returned Range Category:] The range category of `rng` if and only if `rng` is not a __bidirectional_range__. If `rng` is a __bidirectional_range__ then the returned range category is __forward_range__. The rationale for the demotion of __bidirectional_range__ inputs to __forward_range__ is to avoid slow calculation of indices for `boost::end(rng)`. [section:indexed_example indexed example] [import ../../../test/adaptor_test/indexed_example.cpp] [indexed_example] [endsect] This would produce the output: `` Element = 10 Index = 0 Element = 20 Index = 1 Element = 30 Index = 2 Element = 40 Index = 3 Element = 50 Index = 4 Element = 60 Index = 5 Element = 70 Index = 6 Element = 80 Index = 7 Element = 90 Index = 8 `` [endsect]