std::map<Key,T,Compare,Allocator>:: begin, std::map<Key,T,Compare,Allocator>:: cbegin
From cppreference.net
|
iterator begin
(
)
;
|
(1) |
(noexcept desde C++11)
(constexpr desde C++26) |
|
const_iterator begin
(
)
const
;
|
(2) |
(noexcept desde C++11)
(constexpr desde C++26) |
|
const_iterator cbegin
(
)
const
noexcept
;
|
(3) |
(desde C++11)
(constexpr desde C++26) |
Devuelve un iterador al primer elemento de * this .
Si * this está vacío, el iterador devuelto será igual a end() .
Contenidos |
Valor de retorno
Iterador al primer elemento.
Complejidad
Constante.
Notas
libc++ retrocede
cbegin()
al modo C++98.
Ejemplo
Ejecutar este código
Salida:
1, 1.09 4, 4.13 9, 9.24
Ejemplo usando una función de comparación personalizada
Ejecutar este código
#include <cmath> #include <iostream> #include <map> struct Point { double x, y; }; // Comparar las coordenadas x de dos punteros a Point. struct PointCmp { bool operator()(const Point* lhs, const Point* rhs) const { return lhs->x < rhs->x; } }; int main() { // Nótese que aunque las coordenadas x están desordenadas, el // mapa será iterado en orden creciente de coordenadas x. Point points[3] = {{2, 0}, {1, 0}, {3, 0}}; // mag es un mapa que envía la dirección del nodo a su magnitud en el plano x-y. // Aunque las claves son punteros-a-Point, queremos ordenar el mapa por las // coordenadas x de los puntos y NO por las direcciones de los Points. Esto // se hace usando el método de comparación de la clase PointCmp. std::map<Point*, double, PointCmp> mag( {{points, 2}, {points + 1, 1}, {points + 2, 3}} ); // Cambiar cada coordenada y de 0 a la magnitud. for (auto iter = mag.begin(); iter != mag.end(); ++iter) { auto cur = iter->first; // Puntero a Node cur->y = mag[cur]; // También se podría haber usado cur->y = iter->second; } // Actualizar e imprimir la magnitud de cada nodo. 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'; } // Repetir lo anterior con el bucle for basado en rangos. 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'; // Nótese que en contraste con std::cout << iter->second << '\n'; anterior, // std::cout << i.second << '\n'; NO imprimirá la magnitud actualizada. // Si se usara auto &i : mag en su lugar, imprimirá la magnitud actualizada. } }
Salida:
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
Véase también
|
(C++11)
|
devuelve un iterador al final
(función miembro pública) |
|
(C++11)
(C++14)
|
devuelve un iterador al inicio de un contenedor o array
(plantilla de función) |