std::ranges::drop_view<V>::begin
From cppreference.com
constexpr auto begin() requires (!(__SimpleView<V> && |
(1) | (since C++20) |
constexpr auto begin() const requires ranges::random_access_range<const V> && ranges::sized_range<const V>; |
(2) | (since C++20) |
Returns an iterator to the first element of the drop_view
, that is, an iterator to the N-th element of the underlying view, or to the end of the underlying view if it has less than N elements.
If V is not a random_access_range
or a sized_range
, in order to provide the amortized constant time complexity required by the range
concept, the overload (1) caches the result within the drop_view
object for use on subsequent calls.
Parameters
(none)
Return value
ranges::next(ranges::begin(base_), count_, ranges::end(base_)), where base_ is the underlying view, and count_ is the number of elements to skip.
Example
Run this code
#include <algorithm> #include <array> #include <iostream> #include <iterator> #include <ranges> int main() { std::array hi{ 'H','e','l','l','o',',',' ','C','+','+','2','0','!' }; std::ranges::for_each(hi, [](const char c){ std::cout << c; }); std::cout << '\n'; const auto c = std::distance(hi.begin(), std::ranges::find(hi, 'C')); auto cxx = std::ranges::drop_view{ hi, c }; std::cout << "*drop_view::begin() == '" << *cxx.begin() << "'\n"; // *cxx.begin() = 'c'; // undefined: 'views' are to be used as observers for (char c : cxx) { std::cout << c; } std::cout << '\n'; }
Output:
Hello, C++20! *drop_view::begin() == 'C' C++20!
Defect reports
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 requires sized_range
|
See also
(C++20) |
returns an iterator or a sentinel to the end (public member function) |
(C++20) |
returns an iterator to the beginning of a range (customization point object) |
(C++20) |
returns a sentinel indicating the end of a range (customization point object) |