std::span<T,Extent>::subspan
template< std::size_t Offset,
std::size_t Count = std::dynamic_extent >
constexpr std::span<element_type, E /* see below */>
subspan() const; |
(1) | (с C++20) |
constexpr std::span<element_type, std::dynamic_extent>
subspan( size_type Offset,
size_type Count = std::dynamic_extent ) const; |
(2) | (с C++20) |
Получает span, представляющий собой представление над Count элементами данного span, начиная с смещения Offset. Если Count равно std::dynamic_extent, количество элементов в под-span равно size() - offset (т.е. оно заканчивается в конце *this).
OffsetбольшеExtent, илиCountне равноstd::dynamic_extentиCountбольшеExtent - Offset.
Поведение не определено, если либо Offset, либо Count находятся за пределами диапазона. Это происходит, если
Offsetбольшеsize(), илиCountне равноstd::dynamic_extentиCountбольшеsize() - Offset.
Размер E возвращаемого span определяется следующим образом:
- Если
Countне равноstd::dynamic_extent,Count; - В противном случае, если
Extentне равноstd::dynamic_extent,Extent - Offset; - В противном случае,
std::dynamic_extent.
Возвращаемое значение
Запрошенная под-span r, такая что r.data() == this->data() + Offset. Если Count равно std::dynamic_extent, r.size() == this->size() - Offset; в противном случае r.size() == Count.
Пример
#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::putchar('\n');
}
}
int main()
{
char abc[26];
std::iota(std::begin(abc), std::end(abc), 'A');
display(abc);
}Вывод:
ABCDEFGHIJKLMNOPQRST BCDEFGHIJKLMNOPQRSTU CDEFGHIJKLMNOPQRSTUV DEFGHIJKLMNOPQRSTUVW EFGHIJKLMNOPQRSTUVWX FGHIJKLMNOPQRSTUVWXY GHIJKLMNOPQRSTUVWXYZ
См. также
получает под-span, состоящий из первых N элементов последовательности(публичный член-функция) |
|
получает под-span, состоящий из последних N элементов последовательности(публичный член-функция) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/container/span/subspan