home | help
std::ranges..._view::begin(3)  C++ Standard Libary std::ranges..._view::begin(3)

NAME
     std::ranges::drop_view::begin - std::ranges::drop_view::begin

Synopsis
	constexpr auto begin()

	    requires   (!(__SimpleView<V>  &&			     (1)  (since
     C++20)
			 ranges::random_access_range<const V> &&

			 ranges::sized_range<const V>));
	constexpr auto begin() const

	    requires  ranges::random_access_range<const  V>  &&      (2)  (since
     C++20)

		     ranges::sized_range<const V>;

	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 <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!

	Defect reports

	The following behavior-changing defect	reports  were  applied	retroac-
     tively to
	previously published C++ standards.

	   DR	  Applied  to	      Behavior as published		 Correct
     behavior
	LWG 3482 C++20	    the const overload can be called	 the const over-
     load requires
			    with unsized ranges 		 sized_range

See also
	end	      returns an iterator or a sentinel to the end
	(C++20)       (public member function)
	ranges::begin returns an iterator to the beginning of a range
	(C++20)       (customization point object)
	ranges::end   returns a sentinel indicating the end of a range
	(C++20)       (customization point object)

http://cppreference.com 	   2024.06.10	   std::ranges..._view::begin(3)

home | help