std::span<T,Extent>::span
De cppreference.com
<tbody>
</tbody>
constexpr span() noexcept; |
(1) | |
template< class It > explicit(extent != std::dynamic_extent) constexpr span( It first, size_type count ); |
(2) | |
template< class It, class End > explicit(extent != std::dynamic_extent) constexpr span( It first, End last ); |
(3) | |
template< std::size_t N > constexpr span( element_type (&arr)[N] ) noexcept; |
(4) | |
template< class U, std::size_t N > constexpr span( std::array<U, N>& arr ) noexcept; |
(5) | |
template< class U, std::size_t N > constexpr span( const std::array<U, N>& arr ) noexcept; |
(6) | |
template< class R > explicit(extent != std::dynamic_extent) constexpr span( R&& range ); |
(7) | |
template< class U, std::size_t N > explicit(extent != std::dynamic_extent && N == std::dynamic_extent) constexpr span( const std::span<U, N>& source ) noexcept; |
(8) | |
constexpr span( const span& other ) noexcept = default; |
(9) | |
Construye un lapso (span).
1) Construye un lapso cuyo
data() == nullptr y size() == 0.
- Esta sobrecarga solo participa en la resolución de sobrecargas si
extent == 0 || extent == std::dynamic_extent.
2) Construye un lapso (
span) que es una vista sobre el rango [first, first + count); el lapso resultante tiene data() == std::to_address(first) y size() == count.
- El comportamiento no está definido si
[first, first + count)no es un rango válido, siItno modela actualmente acontiguous_iterator, o siextent != std::dynamic_extent && count != extent. - Esta sobrecarga solo participa en la resolución de sobrecargas si
Itsatisfacecontiguous_iterator- la conversión de
std::iter_reference_t<It>aelement_typees a lo sumo una conversión de calificación.
3) Construye un lapso (
span) que es una vista sobre el rango [first, last); el lapso resultante tiene data() == std::to_address(first) y size() == last-first.
- El comportamiento no está definido si
[first, last)no es un rango válido, siItno modela actualmente acontiguous_iterator, siEndno modela actualmente asized_sentinel_forparaIt, o siextent != std::dynamic_extent && last-first != extent. - Esta sobrecarga solo participa en la resolución de sobrecargas si
Itsatisfacecontiguous_iterator,Endsatisfacesized_sentinel_forparaIt,- la conversión de
std::iter_reference_t<It>aelement_typees a lo sumo una conversión de calificación, y std::is_convertible_v<End, std::size_t>esfalse.
4-6) Construye un lapso (
span) que es una vista sobre el array arr; el lapso resultante tiene size() == N y data() == std::data(arr).
- Estas sobrecargas solo participan en la resolución de sobrecargas si
extent == std::dynamic_extent || N == extentestruey la conversión destd::remove_pointer_t<decltype(data(arr))>aelement_typees a lo sumo una conversión de calificación. Estos constructores de plantilla nunca se usan para la deducción de argumentos de plantilla de clase.
7) Construye un lapso (
span) que es una vista sobre el rango range; el lapso resultante tiene size() == std::ranges::size(range) y data() == std::ranges::data(range).
- El comportamiento no está definido si
Rno modela actualmente acontiguous_rangeysized_rangeo siRno modela aborrowed_rangemientra queelement_typees no-consto tantoextent != dynamic_extentcomostd::ranges::size(range) != extentsontrue. - Esta sobrecarga solo participa en la resolución de sobrecargas si
Rsatisfacecontiguous_rangeysized_range,- O bien
Rsatisfaceborrowed_rangeostd::is_const_v<element_type>estrue std::remove_cvref_t<R>no es una especialización destd::span,std::remove_cvref_t<R>no es una especialización de std::arraystd::is_array_v<std::remove_cvref_t<R>>esfalse, y- la conversión de
std::ranges::range_reference_t<R>aelement_typees a lo sumo una conversión de calificación.
8) El constructor de conversión de otro lapso
source; el lapso resultante tiene size() == source.size() y data() == source.data().
- El comportamiento no está definido si tanto
extent != dynamic_extentcomosource.size() != extentsontrue. - Esta sobrecarga solo participa en la resolución de sobrecargas si al menos uno de
extent == std::dynamic_extent,N == std::dynamic_extentyN == extentestruey la conversión deUaelement_typees a lo sumo una conversión de calificación.
9) El constructor de copia marcado como
= default copia el tamaño y el puntero a datos; el lapso resultante tiene size() == other.size() y data() == other.data().Parámetros
| first | - | Iterador al primer elemento de la secuencia. |
| count | - | Número de elementos en la secuencia. |
| last | - | Iterador después del último elemento de la secuencia u otro centinela. |
| arr | - | Array para el cual construir una vista. |
| range | - | Rango para el cual construir una vista. |
| source | - | Otro lapso a partir del cual convertir. |
| other | - | Otro lapso a partir del cual copiar. |
Excepciones
2) No lanza nada.
3) Lanza lo que lance
last - first y cuando lo lance.7) Lanza lo que lance
std::ranges::size(r) y std::ranges::data(r) y cuando lo lance.Véase también
| Devuelve un puntero al inicio de la secuencia de elementos. (función miembro pública) | |
| Devuelve el número de elementos en la secuencia. (función miembro pública) | |
| Asigna un lapso. (función miembro pública) | |
(C++17)(C++20) |
Devuelve el tamaño de un contenedor o un array. (plantilla de función) |
(C++17) |
Obtiene el puntero al array subyacente. (plantilla de función) |