Participer au site avec un Tip
Rechercher
 

Améliorations / Corrections

Vous avez des améliorations (ou des corrections) à proposer pour ce document : je vous remerçie par avance de m'en faire part, cela m'aide à améliorer le site.

Emplacement :

Description des améliorations :

La librairie <array>

Cette librairie définie la classe std::array ainsi que ses différentes méthodes. La classe générique (template) std::array permet de définir un tableau à taille fixe.

Les avantages à utiliser cette classe en lieu et place d'un tableau C classique sont multiples. Le tableau géré en interne par cette classe est automatiquement libéré dès que l'instance d'array est relachée. Les accès aux éléments du tableau sont sécurisés : si un mauvais index est utilisé, une exception est déclenchée. Enfin, tous les éléments du tableau sont initialisés avec la valeur par défaut du type associé.

Comparer à la classe <std::vector> (qui permet de gérer des tableaux de taille variable), l'utilisation de la classe <std::array> sera plus efficace, car aucun test sur un éventuel retaillage du tableau ne sera réalisé.

Exemple de code

#include <iostream>
#include <array>
#include <string>

using namespace std;


int main() {

    std::array<string, 5> fixedArray;
    fixedArray[0] = "titi";
    fixedArray[1] = "tutu";
    fixedArray[2] = "tata";
    fixedArray[3] = "toto";

    cout << fixedArray.size() << endl;  // Display 5 : fixedArray[4] exists !!!
    
    fixedArray[4] = "azerty";
    //fixedArray[5] = "qwerty";   // Throw an exception 

    for( string item : fixedArray ) {
        cout << item << endl;
    }

    return 0;
}

Niveau de compatibilité

Cette librairie, initialement proposée par Boost, a été intégrée au standard C++ ISO 2011. Pour des compilateurs non compatible C++ ISO 2011, vous pouvez néanmoins continuer à utiliser son équivalent dans Boost.

Pour obtenir le niveau de compatibilité C++ ISO 2011 sur g++, veuillez ajouter l'option -std=c++11 sur la ligne de commande permettant de lancer votre compilateur.

Sujets connexes

<std::vector>
<std::deque>