mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2025-05-25 10:52:31 -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]
|
|
|
|
|