Espacios de nombres
Variantes

std::span<T,Extent>::subspan

De cppreference.com
 
 
 
 
<tbody> </tbody>
template< std::size_t Offset, std::size_t Count = std::dynamic_extent > constexpr std::span<element_type, E /* véase más abajo */> subspan() const;
(1)
constexpr std::span<element_type, std::dynamic_extent> subspan( size_type Offset, size_type Count = std::dynamic_extent ) const;
(2)

Obtiene un lapso que es una vista sobre los Count elementos de este lapso iniciando en el desplazamiento Offset. Si Count es std::dynamic_extent, el número de elementos del sublapso es size() - offset (es decir, termina al final de *this.).

(1) está mal formado si

  • Offset es mayor que Extent, o
  • Count no es std::dynamic_extent y Count es mayor que Extent - Offset.

El comportamiento no está definido si ya sea Offset o Count está fuera de rango. Esto sucede si

  • Offset es mayor que size(), o
  • Count no es std::dynamic_extent y Count es mayor que size() - Offset.

El alcance E del lapso devuelto por (1) se determina de la manera siguiente:

  • Si Count no es std::dynamic_extent, Count;
  • De lo contrario, si Extent no es std::dynamic_extent, Extent - Offset;
  • De lo contrario, std::dynamic_extent.

Valor de retorno

El sublapso solicitado r, tal que r.data() == this->data() + Offset. Si Count es std::dynamic_extent, r.size() == this->size() - Offset; de lo contrario r.size() == Count.

Ejemplo

#include <algorithm>
#include <cstdio>
#include <numeric>
#include <ranges>
#include <span>

void mostrar(std::span<const char> abc)
{
    const auto columnas{ 20U };
    const auto filas{ abc.size() - columnas + 1 };

    for (auto offset{ 0U }; offset < filas; ++offset) {
        std::ranges::for_each(
            abc.subspan(offset, columnas), 
            std::putchar
        );
        std::putchar('\n');
    }
}

int main()
{
    char abc[26];
    std::iota(std::begin(abc), std::end(abc), 'A');
    mostrar(abc);
}

Salida:

ABCDEFGHIJKLMNOPQRST
BCDEFGHIJKLMNOPQRSTU
CDEFGHIJKLMNOPQRSTUV
DEFGHIJKLMNOPQRSTUVW
EFGHIJKLMNOPQRSTUVWX
FGHIJKLMNOPQRSTUVWXY
GHIJKLMNOPQRSTUVWXYZ

Véase también

Obtiene un sublapso que consiste en los primeros N elementos de la secuencia.
(función miembro pública) [editar]
Obtiene un sublapso que consiste en los últimos N elementos de la secuencia.
(función miembro pública) [editar]