Files
cppdraft_translate/cppdraft/numeric/iota.md
2025-10-25 03:02:53 +03:00

2.4 KiB
Raw Blame History

[numeric.iota]

26 Algorithms library [algorithms]

26.10 Generalized numeric operations [numeric.ops]

26.10.13 Iota [numeric.iota]

🔗

template<class ForwardIterator, class T> constexpr void iota(ForwardIterator first, ForwardIterator last, T value);

1

#

Mandates: T is convertible to ForwardIterator's value type.

The expression ++val, where val has type T, is well-formed.

2

#

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.

3

#

Complexity: Exactly last - first increments and assignments.

🔗

template<[input_or_output_iterator](iterator.concept.iterator#concept:input_or_output_iterator "24.3.4.6Concept input_­or_­output_­iterator[iterator.concept.iterator]") O, [sentinel_for](iterator.concept.sentinel#concept:sentinel_for "24.3.4.7Concept sentinel_­for[iterator.concept.sentinel]")<O> S, [weakly_incrementable](iterator.concept.winc#concept:weakly_incrementable "24.3.4.4Concept weakly_­incrementable[iterator.concept.winc]") T> requires [indirectly_writable](iterator.concept.writable#concept:indirectly_writable "24.3.4.3Concept 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.4Concept weakly_­incrementable[iterator.concept.winc]") T, [output_range](range.refinements#concept:output_range "25.4.6Other range refinements[range.refinements]")<const T&> R> constexpr ranges::iota_result<borrowed_iterator_t<R>, T> ranges::iota(R&& r, T value);

4

#

Effects: Equivalent to:while (first != last) {*first = as_const(value); ++first; ++value;}return {std::move(first), std::move(value)};