std::extents, std::dextents, std::dims
Определено в заголовочном файле <mdspan> | ||
|---|---|---|
template< class IndexType, std::size_t... Extents > class extents; | (1) | (начиная с C++23) |
template< class IndexType, std::size_t Rank > using dextents = /* see below */ | (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 (открытая функция-член) |
|
Наблюдатели |
|
|
[статическая] | возвращает статический ранг extents (открытая статическая функция-член) |
|
[статическая] | возвращает динамический ранг extents (открытая статическая функция-член) |
|
[статическая] | возвращает размер статической размерности extents с заданным индексом ранга (открытая статическая функция-член) |
возвращает размер динамической размерности extents с заданным индексом ранга (открытая функция-член) |
|
Вспомогательные функции |
|
возвращает произведение размеров размерностей в диапазоне [0, i)(функция-член только для экспозиции*) |
|
возвращает произведение размеров размерностей в диапазоне [i+1, rank())(функция-член только для экспозиции*) |
|
| преобразует входное значение в целочисленный тип (функция-член только для экспозиции*) |
|
|
(закрытый) | возвращает число динамических размерностей с индексом ранга меньше заданного (функция-член только для экспозиции*) |
|
(закрытый) | возвращает число r такое, что в диапазоне [0, r+1) имеется ровно i + 1 динамических размерностей для заданного аргумента i(функция-член только для экспозиции*) |
Функции, не являющиеся членами
|
(C++23) | сравнивает лежащие в основе размерности каждого измерения двух extents (функция) |
Руководства по выводу типов(C++23)
Пример
См. также
|
(C++11) | получает число измерений типа массива (шаблон класса) |
|
(C++11) | получает размер типа массива вдоль заданного измерения (шаблон класса) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/container/mdspan/extents