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 .
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
Exécuter ce code
Sortie :
1, 1.09 4, 4.13 9, 9.24
Exemple utilisant une fonction de comparaison personnalisée
Exécuter ce code
#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
|
(C++11)
|
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) |