std::span<T,Extent>::subspan - cppreference.com (original) (raw)
Obtains a subview over some consecutive elements of this span, the elements to be included are determined by an element count and an offset.
- The element count and offset are provided as template arguments, and the subview has a dynamic extent only if both Count and Offset are std::dynamic_extent.
- If Count is std::dynamic_extent, the subview contains all elements starting from the Offsetth.
- Otherwise, the subview contains Count elements starting from the Offsetth.
If Offset <= Extent && (Count == std::dynamic_extent || Count <= Extent - Offset) is false, the program is ill-formed.
| If Offset <= size() && (Count == std::dynamic_extent || Count <= size() - Offset) is false, the behavior is undefined. | (until C++26) | | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------- | | If Offset <= size() && (Count == std::dynamic_extent || Count <= size() - Offset) is false: If the implementation is hardened, a contract violation occurs. Moreover, if the contract-violation handler returns under “observe” evaluation semantic, the behavior is undefined. If the implementation is not hardened, the behavior is undefined. | (since C++26) |
- The element count and offset are provided as function arguments, and the subview always has a dynamic extent.
- If count is std::dynamic_extent, the subview contains all elements starting from the offsetth.
- Otherwise, the subview contains count elements starting from the offsetth.
| If offset <= size() && (count == std::dynamic_extent || count <= size() - offset) is false, the behavior is undefined. | (until C++26) | | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------- | | If offset <= size() && (count == std::dynamic_extent || count <= size() - offset) is false: If the implementation is hardened, a contract violation occurs. Moreover, if the contract-violation handler returns under “observe” evaluation semantic, the behavior is undefined. If the implementation is not hardened, the behavior is undefined. | (since C++26) |
[edit] Return value
- std::span<element_type, FinalExtent>
(data() + Offset, Count != std::dynamic_extent ? Count : size() - Offset))
[edit] Example
#include #include #include #include #include void display(std::span 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::puts(""); } } int main() { char abc[26]; std::ranges::iota(abc, 'A'); display(abc); }
Output:
ABCDEFGHIJKLMNOPQRST BCDEFGHIJKLMNOPQRSTU CDEFGHIJKLMNOPQRSTUV DEFGHIJKLMNOPQRSTUVW EFGHIJKLMNOPQRSTUVWX FGHIJKLMNOPQRSTUVWXY GHIJKLMNOPQRSTUVWXYZ
[edit] See also
| | obtains a subspan consisting of the first N elements of the sequence (public member function) [edit] | | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | | obtains a subspan consisting of the last N elements of the sequence (public member function) [edit] |