std::ranges::cartesian_product_view<Primero, Vs...>::size
De es.cppreference.net
constexpr /* see description */ size()
requires /*cartesian-product-is-sized*/<First, Vs...>;
|
(1) | (desde C++23) |
constexpr /* see description */ size() const
requires /*cartesian-product-is-sized*/<const First, const Vs...>;
|
(2) | (desde C++23) |
Devuelve el número de elementos. El tipo de retorno es un tipo /*unsigned-integer-like*/ definido por la implementación U.
Sea bases_ la tupla subyacente de vistas, y sea prod el producto de los tamaños de todos los rangos en bases_.
1,2) Devuelve
prod. El comportamiento no está definido si prod no puede ser representado por el tipo de retorno U.
Equivalente a:
return [&]<std::size_t... Is>(std::index_sequence<Is...>)
{
auto prod = static_cast<U>(1);
prod = (static_cast<U>(ranges::size(std::get<Is>(bases_))) * ...);
return prod;
}
(std::make_index_sequence<1U + sizeof...(Vs)>{});
Parámetros
(ninguno)
Valor de retorno
El número de elementos, es decir, el producto de los tamaños de todos los rangos subyacentes.
Notas
El tipo de retorno es el tipo más pequeño /*unsigned-integer-like*/ que sea suficientemente amplio para almacenar el producto de los tamaños máximos de todos los rangos subyacentes, si existe tal tipo.
Ejemplo
Ejecutar este código
#include <ranges> int main() { constexpr static auto w = {1}; constexpr static auto x = {2, 3}; constexpr static auto y = {4, 5, 6}; constexpr static auto z = {7, 8, 9, 10, 11, 12, 13}; constexpr auto v = std::ranges::cartesian_product_view(w, x, y, z); static_assert(v.size() == w.size() * x.size() * y.size() * z.size() and v.size() == 42); }
Véase también
|
(C++20)
|
devuelve un entero igual al tamaño de un rango
(objeto punto de personalización) |
|
(C++20)
|
devuelve un entero con signo igual al tamaño de un rango
(objeto punto de personalización) |