Namespaces
Variants

std:: extents, std:: dextents, std:: dims

From cppreference.net
Определено в заголовочном файле <mdspan>
template < class IndexType, std:: size_t ... Extents >
class extents ;
(1) (начиная с C++23)
template < class IndexType, std:: size_t Rank >
using dextents = /* см. ниже */
(2) (начиная с C++23)
template < std:: size_t Rank, class IndexType = std:: size_t >
using dims = std :: dextents < IndexType, Rank > ;
(3) (начиная с C++26)
1) Представляет многомерное индексное пространство с рангом, равным sizeof... ( Extents ) .
2) Удобный псевдоним-шаблон для полностью динамического extents . Пусть d обозначает std:: dynamic_extent , тогда каждая специализация dextents < IndexType, Rank > эквивалентна extents < IndexType /*, d, d, ..., d*/ > (т.е. d повторяется всего Rank раз).
3) Удобный шаблон псевдонима для полностью динамического extents с std:: size_t в качестве типа индекса по умолчанию.

Каждая специализация extents моделирует regular и является TriviallyCopyable .

Содержание

Параметры шаблона

IndexType - тип каждого нединамического Extents . Должен быть знаковым или беззнаковым целочисленным типом. В противном случае программа некорректна
Extents - представляет экстент (размер целочисленного интервала) для каждого ранга индекса. Каждый его элемент либо равен std:: dynamic_extent (в этом случае он представляет динамический экстент и размер экстента будет определяться динамически), либо представим в виде значения типа IndexType (тогда он представляет статический экстент и размер экстента равен его значению), иначе программа некорректна
Rank - обозначает ранг полностью динамического extents

Типы членов

Тип члена Определение
index_type IndexType
size_type std:: make_unsigned_t < index_type >
rank_type std::size_t

Члены данных

Имя члена Определение
std:: array < index_type, rank_dynamic ( ) > dynamic-extents (приватный) Массив, который хранит размер каждого динамического измерения.
( объект-член только для демонстрации* )

Функции-члены

конструирует extents
(публичная функция-член)
Наблюдатели
[static]
возвращает статический ранг extents
(публичная статическая функция-член)
возвращает динамический ранг extents
(публичная статическая функция-член)
возвращает статический размер измерения extents по указанному индексу ранга
(публичная статическая функция-член)
возвращает динамический размер измерения extents по указанному индексу ранга
(публичная функция-член)
Вспомогательные функции
возвращает произведение размеров измерений в диапазоне [ 0 , i )
( функция-член только для демонстрации* )
возвращает произведение размеров измерений в диапазоне [ i + 1 , rank ( ) )
( функция-член только для демонстрации* )
преобразует входное значение в целочисленный тип
( функция-член только для демонстрации* )
(private)
возвращает количество динамических измерений ниже указанного индекса ранга
( функция-член только для демонстрации* )
возвращает число r такое, что в диапазоне [ 0 , r + 1 ) содержится ровно i + 1 динамических измерений для заданного аргумента i
( функция-член только для демонстрации* )

Функции, не являющиеся членами класса

(C++23)
сравнивает базовые размерности в каждом измерении двух extents
(функция)

Руководства по выводу (C++23)

Пример

Смотрите также

(C++11)
получает количество измерений типа массива
(шаблон класса)
(C++11)
получает размер типа массива по указанному измерению
(шаблон класса)