C++ STL : la classe std::numeric limits

De Wiki de Calcul Québec
Aller à : Navigation, rechercher
Autres langues :anglais 100% • ‎français 100%

La classe std::numeric_limits<T> fait partie de la STL (Standard Template Library). Elle nous renseigne sur les principales caractéristiques des types numériques de base (int, long, double, etc.). Elle offre une interface standard, indépendante du compilateur, pour interroger les détails d'implémentation associés aux types arithmétiques. Son utilisation augmente la portabilité du code et peut le rendre plus expressif. Des méthodes comme min(), max(), infinity() et epsilon() permettent au programmeur de connaître et d'exprimer sans ambiguïté les limites d'une représentation des nombres.

L'exemple qui suit montre min() et max() à l'œuvre :


Fichier : exemple_std_numeric_limits.cpp
#include <limits>
#include <vector>
 
using namespace std;
 
// Shrink a vector by converting its elements to a shorter type.
// NOTE: valid for integral types only
template <class TLong, class TShort>
bool reduceSize(const vector<TLong>& input, vector<TShort>& output)
{
    for (size_t i = 0; i < input.size(); ++i)
    {
        if (input[i] >= (TLong)numeric_limits<TShort>::min() &&
            input[i] <= (TLong)numeric_limits<TShort>::max())
        {
            output.push_back((TShort)input[i]);
        }
        else
        {
            // The element does not fit in the target type.
            return false;
        }
    }
 
    // All the elements were converted succesfully.
    return true;
}


Outils personnels
Espaces de noms

Variantes
Actions
Navigation
Ressources de Calcul Québec
Outils
Partager