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

FreeBSD Manual Pages

  
 
  

home | help
std::ranges...p_view::size(3) C++ Standard Libarystd::ranges...p_view::size(3)

NAME
       std::ranges::zip_view::size - std::ranges::zip_view::size

Synopsis
	  constexpr  auto  size()				    (1)	(since
       C++23)
	      requires (ranges::sized_range<Views> && ...);
	  constexpr auto size()	const				   (2)	(since
       C++23)
	      requires (ranges::sized_range<const Views> && ...);

	  Returns  the	number	of  elements in	the zip_view. Provided only if
       each underlying
	  (adapted) range satisfies sized_range.

	  Equivalent to:

	return std::apply
	(
	    [](auto... sizes)
	    {
		using  CT  =   /*make-unsigned-like-t*/<std::common_type_t<de-
       cltype(sizes)...>>;
		return ranges::min({CT(sizes)...});
	    },
	    /*tuple-transform*/(ranges::size, views_)
	);

Parameters
	  (none)

Return value
	  The number of	elements, which	is the minimum size among all sizes of
       adapted views.

Example
       // Run this code

	#include <algorithm>
	#include <cassert>
	#include <deque>
	#include <forward_list>
	#include <ranges>
	#include <vector>

	int main()
	{
	    auto x = std::vector{1, 2, 3, 4, 5};
	    auto y = std::deque{'a', 'b', 'c'};
	    auto z = std::forward_list{1., 2.};

	    auto v1 = std::views::zip(x, y);
	    assert(v1.size() ==	std::min(x.size(), y.size()));
	    assert(v1.size() ==	3);

	    [[maybe_unused]] auto v2 = std::views::zip(x, z);
	//  auto sz = v2.size(); // Error, v2 does not have size():
	    static_assert(not std::ranges::sized_range<decltype(z)>);
	}

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...p_view::size(3)

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

home | help