| ||||||||||||||||||||||
| Range primitives | |||||||
| |||||||
| Range concepts | |||||||||||||||||||
| |||||||||||||||||||
| Range factories | |||||||||
| |||||||||
| Range adaptors | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Helper items | |||||||||||||||||
| |||||||||||||||||
constexprauto begin() requires(!(/*simple-view*/<V>&& | (1) | (since C++20) |
constexprauto begin()const requiresranges::random_access_range<const V>&& | (2) | (since C++20) |
Returns an iterator to the first element of thedrop_view, that is, an iterator to theNth element of the underlying view, or to the end of the underlying view if it has less thanN elements.
IfV is not arandom_access_range or asized_range, in order to provide the amortized constant time complexity required by therange concept, the overload(1) caches the result within the underlyingcache_ object for use on subsequent calls.
Contents |
ranges::next(ranges::begin(base_), count_,ranges::end(base_)).
#include <array>#include <concepts>#include <iostream>#include <iterator>#include <ranges> void println(std::ranges::rangeautoconst& range){for(autoconst& elem: range)std::cout<< elem;std::cout<<'\n';} int main(){std::array hi{'H','e','l','l','o',',',' ','C','+','+','2','0','!'}; println(hi); constauto pos=std::distance(hi.begin(), std::ranges::find(hi,'C'));auto cxx= std::ranges::drop_view{hi, pos};std::cout<<"*drop_view::begin() == '"<<*cxx.begin()<<"'\n";// *cxx.begin() = 'c'; // undefined: 'views' are to be used as observers println(cxx);}
Output:
Hello, C++20!*drop_view::begin() == 'C'C++20!
The following behavior-changing defect reports were applied retroactively to previously published C++ standards.
| DR | Applied to | Behavior as published | Correct behavior |
|---|---|---|---|
| LWG 3482 | C++20 | the const overload can be called with unsized ranges | the const overload requiressized_range |
| returns an iterator or a sentinel to the end (public member function)[edit] | |
(C++20) | returns an iterator to the beginning of a range (customization point object)[edit] |
(C++20) | returns a sentinel indicating the end of a range (customization point object)[edit] |