Scroll to navigation

std::span::subspan(3) C++ Standard Libary std::span::subspan(3)

NAME

std::span::subspan - std::span::subspan

Synopsis


template< std::size_t Offset,


std::size_t Count = std::dynamic_extent > (1)


constexpr std::span<element_type, E /* see below */> subspan() const;
constexpr std::span<element_type, std::dynamic_extent>


subspan( size_type Offset, (2)


size_type Count = std::dynamic_extent ) const;


Obtains a span that is a view over the Count elements of this span starting at
offset Offset. If Count is std::dynamic_extent, the number of elements in the
subspan is size() - offset (i.e., it ends at the end of *this.).


(1) is ill-formed if


* Offset is greater than Extent, or
* Count is not std::dynamic_extent and Count is greater than Extent - Offset.


The behavior is undefined if either Offset or Count is out of range. This happens if


* Offset is greater than size(), or
* Count is not std::dynamic_extent and Count is greater than size() - Offset.


The extent E of the span returned by (1) is determined as follows:


* If Count is not std::dynamic_extent, Count;
* Otherwise, if Extent is not std::dynamic_extent, Extent - Offset;
* Otherwise, std::dynamic_extent.

Return value


The requested subspan r, such that r.data() == this->data() + Offset. If Count is
std::dynamic_extent, r.size() == this->size() - Offset; otherwise r.size() == Count.

Example

// Run this code


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


void display(std::span<const char> abc)
{
const auto columns{ 20U };
const auto rows{ abc.size() - columns + 1 };


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


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

Output:


ABCDEFGHIJKLMNOPQRST
BCDEFGHIJKLMNOPQRSTU
CDEFGHIJKLMNOPQRSTUV
DEFGHIJKLMNOPQRSTUVW
EFGHIJKLMNOPQRSTUVWX
FGHIJKLMNOPQRSTUVWXY
GHIJKLMNOPQRSTUVWXYZ

See also


first obtains a subspan consisting of the first N elements of the sequence
(public member function)
last obtains a subspan consisting of the last N elements of the sequence
(public member function)

2022.07.31 http://cppreference.com