Spec-Zone.ru › C++

std::extents, std::dextents

Определено в заголовочном файле <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)
1) Представляет многомерное индексное пространство ранга, равного sizeof...(Extents).
2) Удобный шаблон-алиас для полностью динамического extents. Пусть d обозначает std::dynamic_extent, каждая специализация которого dextents<TypeIndex, Rank> эквивалентна extents<IndexType /*, d, d, ..., d*/> (т.е. d повторяется в общей сложности Rank раз).

Каждая специализация 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

Члены данных

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

Члены-функции

(конструктор)
создает extents
(публичная функция-член)
Наблюдатели
rank
[статический]
возвращает статический ранг extents
(публичная статическая функция-член)
rank_dynamic
[статический]
возвращает динамический ранг extents
(публичная статическая функция-член)
static_extent
[статический]
возвращает статический размер extents в определенном индексе ранга
(публичная статическая функция-член)
extent
возвращает динамический размер extents в определенном индексе ранга
(публичная функция-член)
Вспомогательные функции
fwd-prod-of-extents
возвращает произведение размеров размеров в диапазоне [​0​, i)
(только для иллюстрации*)
rev-prod-of-extents
возвращает произведение размеров размеров в диапазоне [i + 1, rank())
(только для иллюстрации*)
index-cast
приведение входного значения к целому типу
(только для иллюстрации*)
dynamic-index
(private)
возвращает количество динамических размеров ниже определенного индекса ранга
(только для иллюстрации*)
dynamic-index-inv
(private)
возвращает число r такое, что в диапазоне [​0​, r + 1) имеется ровно i + 1 динамических размеров для определенного аргумента i
(только для иллюстрации*)

Функции вне класса

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

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

Пример

См. также

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

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/container/mdspan/extents

Spec-Zone.ru

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