std::map<Key,T,Compare,Allocator>:: begin, std::map<Key,T,Compare,Allocator>:: cbegin
From cppreference.net
|
iterator begin
(
)
;
|
(1) |
(noexcept seit C++11)
(constexpr seit C++26) |
|
const_iterator begin
(
)
const
;
|
(2) |
(noexcept seit C++11)
(constexpr seit C++26) |
|
const_iterator cbegin
(
)
const
noexcept
;
|
(3) |
(seit C++11)
(constexpr seit C++26) |
Gibt einen Iterator zum ersten Element von * this zurück.
Wenn * this leer ist, wird der zurückgegebene Iterator gleich end() sein.
Inhaltsverzeichnis |
Rückgabewert
Iterator zum ersten Element.
Komplexität
Konstante.
Hinweise
libc++ portiert
cbegin()
in den C++98-Modus zurück.
Beispiel
Diesen Code ausführen
Ausgabe:
1, 1.09 4, 4.13 9, 9.24
Beispiel mit einer benutzerdefinierten Vergleichsfunktion
Diesen Code ausführen
#include <cmath> #include <iostream> #include <map> struct Point { double x, y; }; // Vergleiche die x-Koordinaten zweier Point-Zeiger. struct PointCmp { bool operator()(const Point* lhs, const Point* rhs) const { return lhs->x < rhs->x; } }; int main() { // Beachte: Obwohl die x-Koordinaten nicht in Reihenfolge sind, wird // die Map nach aufsteigenden x-Koordinaten durchlaufen. Point points[3] = {{2, 0}, {1, 0}, {3, 0}}; // mag ist eine Map, die die Adresse eines Knotens auf seine Magnitude in der x-y-Ebene abbildet. // Obwohl die Schlüssel Point-Zeiger sind, wollen wir die Map nach den // x-Koordinaten der Punkte und NICHT nach den Adressen der Points ordnen. // Dies wird durch die Vergleichsmethode der PointCmp-Klasse erreicht. std::map<Point*, double, PointCmp> mag( {{points, 2}, {points + 1, 1}, {points + 2, 3}} ); // Ändere jede y-Koordinate von 0 auf die Magnitude. for (auto iter = mag.begin(); iter != mag.end(); ++iter) { auto cur = iter->first; // Zeiger auf Node cur->y = mag[cur]; // Hätte auch cur->y = iter->second; verwenden können } // Aktualisiere und gebe die Magnitude jedes Knotens aus. 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'; } // Wiederhole das obige mit der bereichsbasierten for-Schleife. 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'; // Beachte: Im Gegensatz zu std::cout << iter->second << '\n'; oben, // wird std::cout << i.second << '\n'; NICHT die aktualisierte Magnitude ausgeben. // Wenn stattdessen auto &i : mag verwendet wird, wird die aktualisierte Magnitude ausgegeben. } }
Ausgabe:
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
Siehe auch
|
(C++11)
|
gibt einen Iterator zum Ende zurück
(öffentliche Elementfunktion) |
|
(C++11)
(C++14)
|
gibt einen Iterator zum Anfang eines Containers oder Arrays zurück
(Funktionstemplate) |