Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
std::ranges...e_view::size(3) C++ Standard Libarystd::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" respec-
       tively.

	  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
       satisfied

	    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)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=std::ranges::slide_view::size&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>

home | help