STL

La STL est la bibliothèque standard de C++. Les identifiants de la STL sont créés dans l’espace de nom std.

Patron de classe array

Tableau de taille fixe

#include <array>

using namespace std;

int main(void) {
    // type et taille
    array<int, 4> ar = {1, 2, 3};

    int c = ar[0]; // attention : pas d'exception
    ar[3] = 6;     // en cas d'erreur d'indice
    ar.at(1); // exception "out_of_range" lancée en cas d'erreur d'indice
    ar.size(); // renvoie la taille de l'array = 4 ici

    return 0;
}

Patron de classe vector

Tableau de taille variable/dynamique

#include <vector>

using namespace std;

int main(void) {
    vector<float> = vec{1., 2, 6, -3};

    vec[0]; // accesseur, pas d'exception (comme array)
    vec.at(1); // gère les erreurs d'indices (comme array)
    vec.size(); // taille du vecteur, ici 4
    vec.push_back(25); // ajoute une case à la, fin
    vec.pop_back(); // retire et renvoie la valeur de la case de fin
    vec.insert(3, 7.5); /* place 7.5 dans la case d'indice 3 et décale
                         * les valeurs des cases d'indice supérieurs de 1 */
    vec.insert(2, 3, 6.5); // 3 est le nombre de cases ajoutés

    return 0;
}

insert

Itérateur

On dit qu’une variable est un itérateur si on peut appliquer les opérateurs :

Les classes array et vector peuvent produire des itérateurs avec les méthodes begin() et end().

Exemple avec array (fonctionne pareil avec vector)

#include <array>

using namespace std;

int main(void) {
    array<int, 4> ar = {1, 2, 3, 4};

    auto debut = ar.begin();
    auto fin = ar.end();

    for(; debut != fin; debut++) // affiche le contenu de l'array
        cout << *debut << endl;

    // On peut raccourci le code au dessus en faisant ceci :
    for(int var = arr)
        cout << var << endl;

    return 0;
}

Patron de classe map

#include <string> // indépendant de map, juste pour l'exemple
#include <map>

using namespace std;

int main(void) {
    map<int, string> dico = {
        {0, "bonjour"},  // 0 -> "bonjour"
        {1, "au revoir"} // 1 -> "au revoir"
    };

    dico[3] = string("trois"); // ajout : 3 -> "trois"
    dico[1] = string("zero");  // donc désormais, 1 -> "zero"

    map<string, int> retour;

    retour["zero"] = 7;     // "zero" -> 7
    int c = retour["zero"]; // ici : c = 7
    retour["un"] = 4;       // "un" -> 4
    retour["zero"] = 5;     // modifications : "zero" -> 5

    return 0;
}

Exemple

map<..., ...> m;
m[...] = ...;
m.clear();

// ici -> m.size() == 0;
// m.empty() == true; // la map est "vide"