Namespaces
Variants

std::map<Key,T,Compare,Allocator>:: end, std::map<Key,T,Compare,Allocator>:: cend

From cppreference.net

iterator end ( ) ;
(1) (noexcept depuis C++11)
(constexpr depuis C++26)
const_iterator end ( ) const ;
(2) (noexcept depuis C++11)
(constexpr depuis C++26)
const_iterator cend ( ) const noexcept ;
(3) (depuis C++11)
(constexpr depuis C++26)

Retourne un itérateur après le dernier élément de * this .

Cet itérateur retourné agit uniquement comme un sentinelle. Il n'est pas garanti qu'il soit déréférençable .

range-begin-end.svg

Table des matières

Valeur de retour

Itérateur après le dernier élément.

Complexité

Constante.

Notes

libc++ rétroporte cend() au mode C++98.

Exemple

#include <iostream>
#include <map>
int main()
{
    std::map<int, float> num_map;
    num_map[4] = 4.13;
    num_map[9] = 9.24;
    num_map[1] = 1.09;
    // Appelle num_map.begin() et num_map.end()
    for (auto it = num_map.begin(); it != num_map.end(); ++it)
        std::cout << it->first << ", " << it->second << '\n';
}

Sortie :

1, 1.09
4, 4.13
9, 9.24

Exemple utilisant une fonction de comparaison personnalisée

#include <cmath>
#include <iostream>
#include <map>
struct Point { double x, y; };
// Comparer les coordonnées x de deux pointeurs de Point.
struct PointCmp
{
    bool operator()(const Point* lhs, const Point* rhs) const
    {
        return lhs->x < rhs->x; 
    }
};
int main()
{
    // Notez que bien que les coordonnées x soient désordonnées,
    // la map sera parcourue par coordonnées x croissantes.
    Point points[3] = {{2, 0}, {1, 0}, {3, 0}};
    // mag est une map associant l'adresse d'un nœud à sa magnitude dans le plan x-y.
    // Bien que les clés soient des pointeurs-vers-Point, nous voulons ordonner la map par
    // les coordonnées x des points et NON par les adresses des Points.
    // Ceci est réalisé en utilisant la méthode de comparaison de la classe PointCmp.
    std::map<Point*, double, PointCmp> mag(
        {{points, 2}, {points + 1, 1}, {points + 2, 3}}
    );
    // Changer chaque coordonnée y de 0 à la magnitude.
    for (auto iter = mag.begin(); iter != mag.end(); ++iter)
    {
        auto cur = iter->first; // Pointeur vers Node
        cur->y = mag[cur]; // On aurait aussi pu utiliser cur->y = iter->second;
    }
    // Mettre à jour et afficher la magnitude de chaque nœud.
    for (auto iter = mag.begin(); iter != mag.end(); ++iter)
    {
        auto cur = iter->first;
        mag[cur] = std::hypot(cur->x, cur->y);
        std::cout << "The magnitude of (" << cur->x << ", " << cur->y << ") is ";
        std::cout << iter->second << '\n';
    }
    // Répéter ce qui précède avec la boucle for basée sur les intervalles.
    for (auto i : mag)
    {
        auto cur = i.first;
        cur->y = i.second;
        mag[cur] = std::hypot(cur->x, cur->y);
        std::cout << "The magnitude of (" << cur->x << ", " << cur->y << ") is ";
        std::cout << mag[cur] << '\n';
        // Notez qu'au contraire de std::cout << iter->second << '\n'; ci-dessus,
        // std::cout << i.second << '\n'; n'affichera PAS la magnitude mise à jour.
        // Si auto &i : mag était utilisé à la place, cela afficherait la magnitude mise à jour.
    }
}

Sortie :

The magnitude of (1, 1) is 1.41421
The magnitude of (2, 2) is 2.82843
The magnitude of (3, 3) is 4.24264
The magnitude of (1, 1.41421) is 1.73205
The magnitude of (2, 2.82843) is 3.4641
The magnitude of (3, 4.24264) is 5.19615

Voir aussi

renvoie un itérateur vers le début
(fonction membre publique)
(C++11) (C++14)
renvoie un itérateur vers la fin d'un conteneur ou d'un tableau
(fonction template)