std::map<Key,T,Compare,Allocator>:: end, std::map<Key,T,Compare,Allocator>:: cend
From cppreference.net
|
iterator end
(
)
;
|
(1) |
(noexcept seit C++11)
(constexpr seit C++26) |
|
const_iterator end
(
)
const
;
|
(2) |
(noexcept seit C++11)
(constexpr seit C++26) |
|
const_iterator cend
(
)
const
noexcept
;
|
(3) |
(seit C++11)
(constexpr seit C++26) |
Gibt einen Iterator zurück, der hinter dem letzten Element von * this liegt.
Dieser zurückgegebene Iterator fungiert lediglich als Sentinel. Es ist nicht garantiert, dass er dereferenzierbar ist.
Inhaltsverzeichnis |
Rückgabewert
Iterator hinter dem letzten Element.
Komplexität
Konstante.
Hinweise
libc++ portiert
cend()
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 durch aufsteigende x-Koordinaten iteriert. 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 ordnen und NICHT nach den Adressen der Points. // 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 zur 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 auf den Anfang zurück
(öffentliche Elementfunktion) |
|
(C++11)
(C++14)
|
gibt einen Iterator auf das Ende eines Containers oder Arrays zurück
(Funktionstemplate) |