home | help
std::ranges...e_view::size(3)  C++ Standard Libary std::ranges...e_view::size(3)

NAME
     std::ranges::slide_view::size - std::ranges::slide_view::size

Synopsis
	constexpr auto size()			  (since C++23)
	  requires ranges::sized_range<V>;
	constexpr auto size() const		  (since C++23)
	  requires ranges::sized_range<const V>;

	Returns the number of elements.

	Let base_ and n_ be the underlying view and "window size" respectively.

	Equivalent to:

      auto sz = ranges::distance(base_) - n_ + 1;
      if (sz < 0)
	  sz = 0;
      return __to_unsigned_like(sz);

Parameters
	(none)

Return value
	The  number  of  elements.  Equals  to	0,  if	the  number  of elements
     (ranges::size(base_))
	in underlying view base_ is less than "window size" n_.

Example
     // Run this code

      #include <forward_list>
      #include <iostream>
      #include <list>
      #include <ranges>

      int main()
      {
	  constexpr static auto v = {1, 2, 3, 4, 5, 6};

	  constexpr int width1{4};
	  constexpr auto view1{std::views::slide(v, width1)};
	  static_assert(view1.size() == 3);
	  static_assert(view1.size() == (v.size() - width1 + 1));

	  constexpr int width2{8};
	  constexpr auto view2{std::views::slide(v, width2)};
	  // window is too wide, so view2 has no elements:
	  static_assert(view2.size() == 0);

	  std::forward_list forward_list = v;
	  const auto view3{std::views::slide(forward_list, width1)};
      //  auto x = view3.size(); // error: sized_range constraint is not  satis-
     fied

	  std::list list = v;
	  const auto view4{std::views::slide(list, width1)};
	  std::cout << view4.size() << '\n'; // prints 3
      }

Output:
      3

See also
	ranges::size  returns an integer equal to the size of a range
	(C++20)       (customization point object)
	ranges::ssize returns a signed integer equal to the size of a range
	(C++20)       (customization point object)

http://cppreference.com 	   2024.06.10	   std::ranges...e_view::size(3)

home | help