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

NAME
     std::ranges::zip_transform_view::size	 -	 std::ranges::zip_trans-
     form_view::size

Synopsis
	constexpr auto size()				      (1) (since C++23)
	    requires ranges::sized_range</*InnerView*/>;
	constexpr auto size() const			      (2) (since C++23)
	    requires ranges::sized_range<const /*InnerView*/>

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

	1,2) Equivalent to: return zip_.size();.

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 <functional>
      #include <iostream>
      #include <ranges>
      #include <vector>

      int main()
      {
	  auto x = std::vector{1, 2, 3, 4, 5};
	  auto y = std::deque<short>{10, 20, 30};
	  auto z = std::forward_list{100., 200.};

	  auto v1 = std::views::zip_transform(std::plus{}, x, y);
	  assert(v1.size() == std::min(x.size(), y.size()));
	  assert(v1.size() == 3);
	  for (int i : v1)
	      std::cout << i << ' ';
	  std::cout << '\n';

	  [[maybe_unused]] auto v2 =  std::views::zip_transform(std::plus{},  x,
     z);
      //   auto sz = v2.size(); // Error: z doesn't have size(), so neither does
     v2
	  static_assert(not std::ranges::sized_range<decltype(z)>);
      }

Output:
      11 22 33

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

home | help