std::ranges::cartesian_product_view<First, Vs...>:: size
|
||||||||||||||||||||||
| Range primitives | |||||||
|
|||||||
| Range concepts | |||||||||||||||||||
|
|||||||||||||||||||
| Range factories | |||||||||
|
|||||||||
| Range adaptors | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||
| Helper items | |||||||||||||||||
|
|
||||||||||||||||
| Member functions | ||||
|
cartesian_product_view::size
|
||||
| Deduction guides | ||||
| Iterator | ||||
| Member functions | ||||
| Non-member functions | ||||
|
constexpr
/* ver descripción */
size
(
)
requires /*cartesian-product-is-sized*/ < First, Vs... > ; |
(1) | (desde C++23) |
|
constexpr
/* ver descripción */
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
prod
el producto de los tamaños de todos los rangos en
bases_
.
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)>{});
Contenidos |
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
#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) |