51 lines
2.4 KiB
Markdown
51 lines
2.4 KiB
Markdown
[numeric.iota]
|
||
|
||
# 26 Algorithms library [[algorithms]](./#algorithms)
|
||
|
||
## 26.10 Generalized numeric operations [[numeric.ops]](numeric.ops#numeric.iota)
|
||
|
||
### 26.10.13 Iota [numeric.iota]
|
||
|
||
[ð](#lib:iota)
|
||
|
||
`template<class ForwardIterator, class T>
|
||
constexpr void iota(ForwardIterator first, ForwardIterator last, T value);
|
||
`
|
||
|
||
[1](#1)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/algorithms.tex#L13224)
|
||
|
||
*Mandates*: T is convertible to ForwardIterator's value type[.](#1.sentence-1)
|
||
|
||
The expression ++val, where val has type T,
|
||
is well-formed[.](#1.sentence-2)
|
||
|
||
[2](#2)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/algorithms.tex#L13230)
|
||
|
||
*Effects*: For each element referred to by the iterator i in the range [first, last),
|
||
assigns *i = value and increments value as if by ++value[.](#2.sentence-1)
|
||
|
||
[3](#3)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/algorithms.tex#L13237)
|
||
|
||
*Complexity*: Exactly last - first increments and assignments[.](#3.sentence-1)
|
||
|
||
[ð](#lib:iota_)
|
||
|
||
`template<[input_or_output_iterator](iterator.concept.iterator#concept:input_or_output_iterator "24.3.4.6 Concept input_or_output_iterator [iterator.concept.iterator]") O, [sentinel_for](iterator.concept.sentinel#concept:sentinel_for "24.3.4.7 Concept sentinel_for [iterator.concept.sentinel]")<O> S, [weakly_incrementable](iterator.concept.winc#concept:weakly_incrementable "24.3.4.4 Concept weakly_incrementable [iterator.concept.winc]") T>
|
||
requires [indirectly_writable](iterator.concept.writable#concept:indirectly_writable "24.3.4.3 Concept indirectly_writable [iterator.concept.writable]")<O, const T&>
|
||
constexpr ranges::iota_result<O, T> ranges::iota(O first, S last, T value);
|
||
template<[weakly_incrementable](iterator.concept.winc#concept:weakly_incrementable "24.3.4.4 Concept weakly_incrementable [iterator.concept.winc]") T, [output_range](range.refinements#concept:output_range "25.4.6 Other range refinements [range.refinements]")<const T&> R>
|
||
constexpr ranges::iota_result<borrowed_iterator_t<R>, T> ranges::iota(R&& r, T value);
|
||
`
|
||
|
||
[4](#4)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/algorithms.tex#L13252)
|
||
|
||
*Effects*: Equivalent to:while (first != last) {*first = as_const(value); ++first; ++value;}return {std::move(first), std::move(value)};
|