Espacios de nombres
Variantes

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, si It no modela actualmente a contiguous_iterator, o si extent != std::dynamic_extent && count != extent.
  • Esta sobrecarga solo participa en la resolución de sobrecargas si
  • It satisface contiguous_iterator
  • la conversión de std::iter_reference_t<It> a element_type es 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, si It no modela actualmente a contiguous_iterator, si End no modela actualmente a sized_sentinel_for para It, o si extent != std::dynamic_extent && last-first != extent.
  • Esta sobrecarga solo participa en la resolución de sobrecargas si
  • It satisface contiguous_iterator,
  • End satisface sized_sentinel_for para It,
  • la conversión de std::iter_reference_t<It> a element_type es a lo sumo una conversión de calificación, y
  • std::is_convertible_v<End, std::size_t> es false.
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 == extent es true y la conversión de std::remove_pointer_t<decltype(data(arr))> a element_type es 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 R no modela actualmente a contiguous_range y sized_range o si R no modela a borrowed_range mientra que element_type es no-const o tanto extent != dynamic_extent como std::ranges::size(range) != extent son true.
  • Esta sobrecarga solo participa en la resolución de sobrecargas si
  • R satisface contiguous_range y sized_range,
  • O bien R satisface borrowed_range o std::is_const_v<element_type> es true
  • std::remove_cvref_t<R> no es una especialización de std::span,
  • std::remove_cvref_t<R> no es una especialización de std::array
  • std::is_array_v<std::remove_cvref_t<R>> es false, y
  • la conversión de std::ranges::range_reference_t<R> a element_type es 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_extent como source.size() != extent son true.
  • Esta sobrecarga solo participa en la resolución de sobrecargas si al menos uno de extent == std::dynamic_extent, N == std::dynamic_extent y N == extent es true y la conversión de U a element_type es 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) [editar]
Devuelve el número de elementos en la secuencia.
(función miembro pública) [editar]
Asigna un lapso.
(función miembro pública) [editar]
(C++17)(C++20)
Devuelve el tamaño de un contenedor o un array.
(plantilla de función) [editar]
(C++17)
Obtiene el puntero al array subyacente.
(plantilla de función) [editar]