root / tmp / org.txm.statsengine.r.core.win32 / res / win32 / library / BH / include / boost / algorithm / cxx11 / iota.hpp @ 2486
History | View | Annotate | Download (2.1 kB)
1 |
/*
|
---|---|
2 |
Copyright (c) Marshall Clow 2008-2012.
|
3 |
|
4 |
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
5 |
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
6 |
*/
|
7 |
|
8 |
/// \file iota.hpp
|
9 |
/// \brief Generate an increasing series
|
10 |
/// \author Marshall Clow
|
11 |
|
12 |
#ifndef BOOST_ALGORITHM_IOTA_HPP
|
13 |
#define BOOST_ALGORITHM_IOTA_HPP
|
14 |
|
15 |
#include <numeric> |
16 |
|
17 |
#include <boost/range/begin.hpp> |
18 |
#include <boost/range/end.hpp> |
19 |
|
20 |
namespace boost { namespace algorithm { |
21 |
|
22 |
/// \fn iota ( ForwardIterator first, ForwardIterator last, T value )
|
23 |
/// \brief Generates an increasing sequence of values, and stores them in [first, last)
|
24 |
///
|
25 |
/// \param first The start of the input sequence
|
26 |
/// \param last One past the end of the input sequence
|
27 |
/// \param value The initial value of the sequence to be generated
|
28 |
/// \note This function is part of the C++2011 standard library.
|
29 |
/// We will use the standard one if it is available,
|
30 |
/// otherwise we have our own implementation.
|
31 |
template <typename ForwardIterator, typename T> |
32 |
void iota ( ForwardIterator first, ForwardIterator last, T value )
|
33 |
{ |
34 |
for ( ; first != last; ++first, ++value )
|
35 |
*first = value; |
36 |
} |
37 |
|
38 |
/// \fn iota ( Range &r, T value )
|
39 |
/// \brief Generates an increasing sequence of values, and stores them in the input Range.
|
40 |
///
|
41 |
/// \param r The input range
|
42 |
/// \param value The initial value of the sequence to be generated
|
43 |
///
|
44 |
template <typename Range, typename T> |
45 |
void iota ( Range &r, T value )
|
46 |
{ |
47 |
boost::algorithm::iota (boost::begin(r), boost::end(r), value); |
48 |
} |
49 |
|
50 |
|
51 |
/// \fn iota_n ( OutputIterator out, T value, std::size_t n )
|
52 |
/// \brief Generates an increasing sequence of values, and stores them in the input Range.
|
53 |
///
|
54 |
/// \param out An output iterator to write the results into
|
55 |
/// \param value The initial value of the sequence to be generated
|
56 |
/// \param n The number of items to write
|
57 |
///
|
58 |
template <typename OutputIterator, typename T> |
59 |
OutputIterator iota_n ( OutputIterator out, T value, std::size_t n ) |
60 |
{ |
61 |
for ( ; n > 0; --n, ++value ) |
62 |
*out++ = value; |
63 |
|
64 |
return out;
|
65 |
} |
66 |
|
67 |
}} |
68 |
|
69 |
#endif // BOOST_ALGORITHM_IOTA_HPP |