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.
(none).
ranges::next(ranges::begin(base_), count_, ranges::end(base_))
, where base_
is the underlying view, and count_
is the number of elements to skip.
#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:
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 |
(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) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/ranges/drop_view/begin