std::ranges::drop_view<V>::begin
From cppreference.com
constexpr auto begin() requires (!(__SimpleView<V> && ranges::random_access_range<V>)); |
(1) | (since C++20) |
constexpr auto begin() 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 N-th element of the underlying view, or to the end of the underlying view if it has less than N elements.
1) If V is not a random_access_range, in order to provide the amortized constant time complexity required by the range concept, this function 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'; // do not modify an original object using a 'view' for (char c : cxx) { std::cout << c; } std::cout << '\n'; }
Output:
Hello, C++20! *drop_view::begin() == 'C' C++20!
See also
returns an iterator or a sentinel to the end (public member function) |