std::full_extent, std::full_extent_t
Определён в заголовочном файле <mdspan> | ||
|---|---|---|
struct full_extent_t { explicit full_extent_t() = default; };
| (1) | (начиная с C++26) |
inline constexpr std::full_extent_t full_extent {};
| (2) | (начиная с C++26) |
1) Класс
std::full_extent_t — это тип спецификатора среза, который можно использовать в std::submdspan.
2) Соответствующий экземпляр
std::full_extent из (1) является спецификатором среза, обозначающим полный диапазон индексов в указанном экстенте в std::submdspan.Пример
#include <mdspan>
#include <print>
void print(auto view)
{
static_assert(view.rank() <= 2);
if constexpr (view.rank() == 2)
{
for (std::size_t i = 0; i != view.extent(0); ++i)
{
for (std::size_t j = 0; j != view.extent(1); ++j)
std::print("{} ", view[i, j]);
std::println();
}
}
else if constexpr (view.rank() == 1)
{
for (std::size_t i = 0; i != view.extent(0); ++i)
std::print("{} ", view[i]);
std::println();
}
else
std::println("{}", view[]);
std::println();
}
int main()
{
const char letters []{'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I'};
const std::mdspan view(letters, 3, 3);
print(view);
print(std::submdspan(view, std::full_extent, std::full_extent));
print(std::submdspan(view, std::full_extent, 1));
print(std::submdspan(view, 1, std::full_extent));
print(std::submdspan(view, 2, 1));
}
Возможный вывод:
A B C D E F G H I A B C D E F G H I B E H D E F H
См. также
|
(C++26) | возвращает представление подмножества существующего mdspan (шаблон функции) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/container/mdspan/full_extent