mirror of
				https://github.com/saitohirga/WSJT-X.git
				synced 2025-10-31 04:50:34 -04:00 
			
		
		
		
	
		
			
				
	
	
		
			85 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			85 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| [/
 | |
|     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<decltype(rng)>::type,
 | |
|     typename boost::range_difference<decltype(rng)>::type
 | |
| >
 | |
| ``
 | |
| 
 | |
| The synopsis of index_value is as follows:
 | |
| ``
 | |
| template<class T, class Indexable=std::ptrdiff_t>
 | |
| class index_value : public boost::tuple<Indexable, T>
 | |
| {
 | |
| 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<decltype(rng)>`
 | |
| * [*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]
 | |
| 
 | |
| 
 |