std::span

From cppreference.com
< cpplrm; | container
Defined in header <span>
template<

class T,
std::ptrdiff_t Extent = std::dynamic_extent

> class span;
(since C++20)

The class template span describes an object that can refer to a contiguous sequence of objects with the first element of the sequence at position zero. A span can either have a static extent, in which case the number of elements in the sequence is known and encoded in the type, or a dynamic extent.

A typical implementation holds only two members: a pointer to T and a size.

Template parameters

T - element type; must be a complete type that is not an abstract class type
Extent - the number of elements in the sequence, or std::dynamic_extent if dynamic; the program is ill-formed if Extent is negative and is not std::dynamic_extent

Member types

Member type Definition
element_type T
value_type std::remove_cv_t<T>
index_type std::ptrdiff_t
difference_type std::ptrdiff_t
pointer T*
reference T&
iterator implementation-defined RandomAccessIterator, ConstexprIterator, and ContiguousIterator whose value_type is value_type
const_iterator implementation-defined constant RandomAccessIterator, ConstexprIterator, and ContiguousIterator whose value_type is value_type
reverse_iterator std::reverse_iterator<iterator>
const_reverse_iterator std::reverse_iterator<const_iterator>

Note: iterator is a mutable iterator if T is not const-qualified.

All requirements on the iterator types of a Container applies to the iterator and const_iterator types of span as well.

Member constant

static constexpr std::ptrdiff_t extent = Extent;

Member functions

constructs a span
(public member function)
assigns a span
(public member function)
Iterators
returns an iterator to the beginning of the sequence
(public member function)
returns an iterator to the end of the sequence
(public member function)
returns a reverse iterator to the beginning of the sequence
(public member function)
returns a reverse iterator to the end of the sequence
(public member function)
Element access
accesses an element of the sequence
(public member function)
returns a pointer to the beginning of the sequence of elements
(public member function)
Observers
returns the number of elements in the sequence
(public member function)
returns the size of the sequence in bytes
(public member function)
checks if the sequence is empty
(public member function)
Subviews
obtains a subspan consisting of the first N elements of the sequence
(public member function)
obtains a subspan consisting of the last N elements of the sequence
(public member function)
obtains a subspan
(public member function)

Non-member functions

compares the elements of two spans
(function template)
converts a span into a view of its underlying bytes
(function template)

Non-member constant

a constant of type ptrdiff_t
(constant)

Deduction guides