Spec-Zone.ru › C++

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

См. также

submdspan
(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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API