std::ranges::drop_view<V>::begin
constexpr auto begin() requires (!(/*simple-view*/<V> && |
(1) | (since C++20) |
constexpr auto begin() const requires ranges::random_access_range<const V> && |
(2) | (since C++20) |
Returns an iterator to the first element of the drop_view
, that is, an iterator to the Nth 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.
Contents |
[edit] Parameters
(none)
[edit] 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.
[edit] Example
#include <array> #include <concepts> #include <iostream> #include <iterator> #include <ranges> void println(std::ranges::range auto const& range) { for (auto const& elem : range) std::cout << elem; std::cout << '\n'; } int main() { std::array hi{'H', 'e', 'l', 'l', 'o', ',', ' ', 'C', '+', '+', '2', '0', '!'}; println(hi); const auto 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!
[edit] 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
|
[edit] See also
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) |