std::map<Key,T,Compare,Allocator>:: begin, std::map<Key,T,Compare,Allocator>:: cbegin
From cppreference.net
|
iterator begin
(
)
;
|
(1) |
(noexcept depuis C++11)
(constexpr depuis C++26) |
|
const_iterator begin
(
)
const
;
|
(2) |
(noexcept depuis C++11)
(constexpr depuis C++26) |
|
const_iterator cbegin
(
)
const
noexcept
;
|
(3) |
(depuis C++11)
(constexpr depuis C++26) |
Retourne un itérateur vers le premier élément de * this .
Si * this est vide, l'itérateur retourné sera égal à end() .
Table des matières |
Valeur de retour
Itérateur vers le premier élément.
Complexité
Constante.
Notes
libc++ rétroporte
cbegin()
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; }; // Compare 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}} ); // Change 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; } // Met à jour et affiche 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ète 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 la fin
(fonction membre publique) |
|
(C++11)
(C++14)
|
renvoie un itérateur vers le début d'un conteneur ou d'un tableau
(fonction template) |