Rank (datorprogrammering) - Rank (computer programming)
Vid datorprogrammering är rangering utan ytterligare specifikationer vanligtvis en synonym för (eller hänvisar till) "antal dimensioner"; sålunda har en tvådimensionell matris rangordning två , en tredimensionell matris har rangordning tre och så vidare. Strängt kan ingen formell definition tillhandahållas som gäller för varje programmeringsspråk , eftersom var och en av dem har sina egna begrepp, semantik och terminologi; termen kanske inte ens är tillämplig eller tvärtom tillämpas med en mycket specifik betydelse inom ramen för ett givet språk.
När det gäller APL gäller idén för varje operand; och dyader ("binära funktioner") har en vänsterrankning och en högerrankning .
Rutan nedan visar istället hur rangordning av en typ och rangordning för ett matrisuttryck kan definieras (i en semi-formell stil) för C ++ och illustrerar ett enkelt sätt att beräkna dem vid sammanställningstiden.
#include <type_traits>
#include <cstddef>
/* Rank of a type
* -------------
*
* Let the rank of a type T be the number of its dimensions if
* it is an array; zero otherwise (which is the usual convention)
*/
template <typename T> struct rank
{
static const std::size_t value = 0;
};
template<typename T, std::size_t N>
struct rank<T[N]>
{
static const std::size_t value = 1 + rank<T>::value;
};
template <typename T>
constexpr auto rank_v = rank<T>::value;
/* Rank of an expression
*
* Let the rank of an expression be the rank of its type
*/
template <typename T>
using unqualified_t = std::remove_cv_t<std::remove_reference_t<T>>;
template <typename T>
auto rankof(T&& expr)
{
return rank_v<unqualified_t<T>>;
}
Med tanke på koden ovan kan rankningen för en typ T beräknas vid sammanställningstiden med
rank<T>::value
eller den kortare formen
rank_v<T>
Beräkning av rangordning för ett uttryck kan göras med
rankof(expr)
Se även
- Rank (linjär algebra) , för en definition av rang som tillämpas på matriser
- Rank (J-programmeringsspråk) , ett begrepp med samma namn i J-programmeringsspråket
| Denna programmeringsspråkrelaterade artikel är en stubb . Du kan hjälpa Wikipedia genom att utvidga den . |