std::span<T,Extent>:: subspan
|
template
<
std::
size_t
Offset,
std::
size_t
Count
=
std::
dynamic_extent
>
|
(1) | (C++20 起) |
|
constexpr
std::
span
<
element_type,
std::
dynamic_extent
>
subspan
(
size_type offset,
|
(2) | (C++20 起) |
获取此跨度中某些连续元素的子视图,要包含的元素由元素数量和偏移量确定。
- 若 Count 为 std:: dynamic_extent ,则子视图包含从第 Offset 个元素开始的所有元素。
- 否则,子视图包含从第 Offset 个元素开始的 Count 个元素。
? Count
: ( Extent ! = std:: dynamic_extent
? Extent - Offset
: std:: dynamic_extent ) 。
|
若 Offset <= size ( ) && ( Count == std:: dynamic_extent || Count <= size ( ) - Offset ) 为 false ,则行为未定义。 |
(C++26 前) |
|
若 Offset <= size ( ) && ( Count == std:: dynamic_extent || Count <= size ( ) - Offset ) 为 false : |
(C++26 起) |
- 若 count 为 std:: dynamic_extent ,则子视图包含从第 offset 个元素开始的所有元素。
- 否则,子视图包含从第 offset 个元素开始的 count 个元素。
|
若 offset <= size ( ) && ( count == std:: dynamic_extent || count <= size ( ) - offset ) 为 false ,则行为未定义。 |
(C++26 前) |
|
若 offset <= size ( ) && ( count == std:: dynamic_extent || count <= size ( ) - offset ) 为 false : |
(C++26 起) |
返回值
( data ( ) + Offset, Count ! = std:: dynamic_extent ? Count : size ( ) - Offset ) )
( data ( ) + offset, count ! = std:: dynamic_extent ? count : size ( ) - offset ) )
示例
#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::puts(""); } } int main() { char abc[26]; std::ranges::iota(abc, 'A'); display(abc); }
输出:
ABCDEFGHIJKLMNOPQRST BCDEFGHIJKLMNOPQRSTU CDEFGHIJKLMNOPQRSTUV DEFGHIJKLMNOPQRSTUVW EFGHIJKLMNOPQRSTUVWX FGHIJKLMNOPQRSTUVWXY GHIJKLMNOPQRSTUVWXYZ
参见
获取由序列前
N
个元素组成的子区间
(公开成员函数) |
|
获取由序列后
N
个元素组成的子区间
(公开成员函数) |