|
Range primitives | |||||||
|
Range concepts | |||||||||||||||||||
|
Range factories | ||||||||||||||
|
|
Range adaptors | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
Helper items | |||||||||||||||||
|
Defined in header <ranges> | ||
template<std::weakly_incrementable W, std::semiregular Bound=std::unreachable_sentinel_t> | (1) | (since C++20) |
namespace views{ inlineconstexpr/* unspecified */ iota=/* unspecified */; | (2) | (since C++20) |
Call signature | ||
template<class W> requires/* see below */ | (since C++20) | |
template<class W,class Bound> requires/* see below */ | (since C++20) | |
Contents |
The nameviews::iota
denotes acustomization point object, which is a constfunction object of aliteralsemiregular
class type. SeeCustomizationPointObject for details.
Member | Definition |
W value_ | the beginning value (exposition-only member object*) |
Bound bound_ | the sentinel value, may be unreachable (exposition-only member object*) |
creates aniota_view (public member function) | |
obtains the beginning iterator of aniota_view (public member function) | |
obtains the sentinel denoting the end of aniota_view (public member function) | |
tests whether theiota_view is empty (i.e. the iterator and the sentinel compare equal)(public member function) | |
(optional) | obtains the size of aniota_view (only provided if it is bounded)(public member function) |
Inherited fromstd::ranges::view_interface | |
(C++23) | returns a constant iterator to the beginning of the range (public member function of std::ranges::view_interface<D> )[edit] |
(C++23) | returns a sentinel for the constant iterator of the range (public member function of std::ranges::view_interface<D> )[edit] |
returns whether the derived view is not empty, provided only ifranges::empty is applicable to it (public member function of std::ranges::view_interface<D> )[edit] | |
returns the first element in the derived view, provided if it satisfiesforward_range (public member function of std::ranges::view_interface<D> )[edit] | |
returns the last element in the derived view, provided only if it satisfiesbidirectional_range andcommon_range (public member function of std::ranges::view_interface<D> )[edit] | |
returns then th element in the derived view, provided only if it satisfiesrandom_access_range (public member function of std::ranges::view_interface<D> )[edit] |
the iterator type (exposition-only member class*) | |
the sentinel type used when theiota_view is bounded andBound andW are not the same type(exposition-only member class*) |
template<std::weakly_incrementable W,std::semiregular Bound> constexprboolranges::enable_borrowed_range<ranges::iota_view<W, Bound>>=true; | (since C++20) | |
This specialization ofranges::enable_borrowed_range makesiota_view
satisfyborrowed_range
.
#include <algorithm>#include <iostream>#include <ranges> struct Bound{int bound;bool operator==(int x)const{return x== bound;}}; int main(){for(int i: std::ranges::iota_view{1,10})std::cout<< i<<' ';std::cout<<'\n'; for(int i: std::views::iota(1,10))std::cout<< i<<' ';std::cout<<'\n'; for(int i: std::views::iota(1, Bound{10}))std::cout<< i<<' ';std::cout<<'\n'; for(int i: std::views::iota(1)| std::views::take(9))std::cout<< i<<' ';std::cout<<'\n'; std::ranges::for_each(std::views::iota(1,10),[](int i){std::cout<< i<<' ';});std::cout<<'\n';}
Output:
1 2 3 4 5 6 7 8 91 2 3 4 5 6 7 8 91 2 3 4 5 6 7 8 91 2 3 4 5 6 7 8 91 2 3 4 5 6 7 8 9
The following behavior-changing defect reports were applied retroactively to previously published C++ standards.
DR | Applied to | Behavior as published | Correct behavior |
---|---|---|---|
LWG 4096 | C++20 | views::iota could copy aniota_view as-is | forbidden |
P2325R3 | C++20 | iota_view required thatW issemiregular as view requireddefault_initializable | only requires thatW iscopyable |
(C++11) | fills a range with successive increments of the starting value (function template)[edit] |
(C++23) | fills a range with successive increments of the starting value (algorithm function object)[edit] |
aview consisting of a generated sequence by repeatedly producing the same value(class template)(customization point object)[edit] | |
aview that maps each element of adapted sequence to a tuple of both the element's position and its value(class template)(range adaptor object)[edit] |