WikiDer > Ранг (компьютерное программирование)
эта статья не цитировать Любые источники. (Декабрь 2009 г.) (Узнайте, как и когда удалить этот шаблон сообщения) |
В компьютерное программирование, ранг без дополнительных спецификаций обычно является синонимом (или относится к) «количеству измерений»; таким образом, двумерный массив имеет ранг два, трехмерный массив имеет ранг три и т. д. Строго говоря, невозможно дать формальное определение, применимое ко всем язык программирования, поскольку у каждого из них свои концепции, семантика и терминология; термин может даже не применяться или, наоборот, применяться с очень специфическим значением в контексте данного языка.
На случай, если 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)
Смотрите также
- Ранг (линейная алгебра), для определения ранг применительно к матрицы
- Ранг (язык программирования J), одноименный концепт в Язык программирования J
Эта язык программирования-связанная статья является заглушка. Вы можете помочь Википедии расширяя это. |