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 番目から始まる全ての要素を含みます。
- それ以外の場合、サブビューは Count 個の要素を Offset 番目から含みます。
? Count
: ( Extent ! = std:: dynamic_extent
? Extent - Offset
: std:: dynamic_extent ) 。
|
|
(C++26まで) |
|
|
(C++26以降) |
- count が std:: dynamic_extent の場合、サブビューは offset 番目 から始まる全ての要素を含みます。
- それ以外の場合、サブビューは offset 番目 から始まる count 個の要素を含みます。
|
|
(C++26まで) |
|
|
(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
個の要素からなる部分スパンを取得する
(public member function) |
|
シーケンスの最後の
N
個の要素からなる部分スパンを取得する
(public member function) |