<span>
A span
is a view over a contiguous sequence of objects. It provides fast and bounds-safe access. Unlike vector
or array
, it doesn't "own" the elements.
See span
class for detailed information. Here's an example of how to use a span
:
#include <span>
#include <iostream>
void Show(std::span<int> someValues)
{
// show values in reverse
for (auto rIt = someValues.rbegin(); rIt != someValues.rend(); ++rIt)
{
std::cout << *rIt;
}
// show a subspan
for (auto& i : someValues.subspan(1, 2))
{
std::cout << i;
}
}
int main()
{
int numbers[]{ 0,1,2,3,4 };
Show(numbers); // note conversion from array to span
}
Requirements
Header: <span>
Namespace: std
Compiler option: /std:c++20
or later is required.
Members
Classes
Name | Description |
---|---|
span |
Provides a view over a contiguous sequence of objects. |
Operators
Name | Description |
---|---|
operator= |
Span assignment |
operator[] |
Element access |
Functions
Name | Description |
---|---|
as_bytes |
Get the underlying read-only bytes of the span. |
as_writable_bytes |
Get the underlying bytes of the span. |
Constants
Name | Description |
---|---|
dynamic_extent |
Indicates that the span size is determined at runtime rather than compile time. When the number of elements in the span is known at compile time, it's specified as the Extent template parameter. When the number isn't known until runtime, specify dynamic_extent instead. |