WikiDer > Ранг (компьютерное программирование)

Rank (computer programming)

В компьютерное программирование, ранг без дополнительных спецификаций обычно является синонимом (или относится к) «количеству измерений»; таким образом, двумерный массив имеет ранг два, трехмерный массив имеет ранг три и т. д. Строго говоря, невозможно дать формальное определение, применимое ко всем язык программирования, поскольку у каждого из них свои концепции, семантика и терминология; термин может даже не применяться или, наоборот, применяться с очень специфическим значением в контексте данного языка.

На случай, если APL понятие применимо к каждому операнду; и диады ("бинарные функции") имеют левый ранг и правильный ранг.

В поле ниже показано, как ранг типа и ранг выражения массива могут быть определены (в полуформальном стиле) для C ++ и иллюстрируют простой способ их вычисления во время компиляции.

#включают <type_traits>#включают <cstddef> / * Ранг типа * ------------- * * Пусть ранг типа T будет числом его измерений, если * это массив; ноль в противном случае (обычное соглашение) */шаблон <typename Т> структура ранг{    статический const стандартное::size_t ценность = 0;};шаблон<typename Т, стандартное::size_t N>структура ранг<Т[N]>{    статический const стандартное::size_t ценность = 1 + ранг<Т>::ценность;};шаблон <typename Т>constexpr авто rank_v = ранг<Т>::ценность;/ * Ранг выражения * * Пусть ранг выражения будет рангом его типа */шаблон <typename Т>с помощью unqualified_t = стандартное::remove_cv_t<стандартное::remove_reference_t<Т>>; шаблон <typename Т>авто ранг(Т&& expr){    вернуть rank_v<unqualified_t<Т>>;}

Учитывая код выше, ранг типа T может быть вычислен во время компиляции с помощью

ранг<Т>::ценность

или более короткая форма

rank_v<Т>

Вычислить ранг выражения можно с помощью

ранг(expr)

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