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 (публичная функция-член) |
|
Наблюдатели |
|
|
[статический] | возвращает статический ранг extents (публичная статическая функция-член) |
|
[статический] | возвращает динамический ранг extents (публичная статическая функция-член) |
|
[статический] | возвращает статический размер extents в определенном индексе ранга (публичная статическая функция-член) |
возвращает динамический размер extents в определенном индексе ранга (публичная функция-член) |
|
Вспомогательные функции |
|
возвращает произведение размеров размеров в диапазоне [0, i)(только для иллюстрации*) |
|
возвращает произведение размеров размеров в диапазоне [i + 1, rank())(только для иллюстрации*) |
|
| приведение входного значения к целому типу (только для иллюстрации*) |
|
|
(private) | возвращает количество динамических размеров ниже определенного индекса ранга (только для иллюстрации*) |
|
(private) | возвращает число 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/w/cpp/container/mdspan/extents