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 ) .
|
만약 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
개 요소로 구성된 부분 스팬을 얻음
(public member function) |
|
시퀀스의 마지막
N
개 요소로 구성된 부분 스팬을 얻음
(public member function) |