std:: end, std:: cend
|
Definiert in Header
<array>
|
||
|
Definiert in Header
<deque>
|
||
|
Definiert in Header
<flat_map>
|
||
|
Definiert in Header
<flat_set>
|
||
|
Definiert in Header
<forward_list>
|
||
|
Definiert in Header
<inplace_vector>
|
||
|
Definiert in Header
<iterator>
|
||
|
Definiert in Header
<list>
|
||
|
Definiert in Header
<map>
|
||
|
Definiert in Header
<regex>
|
||
|
Definiert in Header
<set>
|
||
|
Definiert in Header
<span>
|
||
|
Definiert in Header
<string>
|
||
|
Definiert in Header
<string_view>
|
||
|
Definiert in Header
<unordered_map>
|
||
|
Definiert in Header
<unordered_set>
|
||
|
Definiert in Header
<vector>
|
||
|
template
<
class
C
>
auto end ( C & c ) - > decltype ( c. end ( ) ) ; |
(1) |
(seit C++11)
(constexpr seit C++17) |
|
template
<
class
C
>
auto end ( const C & c ) - > decltype ( c. end ( ) ) ; |
(2) |
(seit C++11)
(constexpr seit C++17) |
|
template
<
class
T,
std::
size_t
N
>
T * end ( T ( & array ) [ N ] ) ; |
(3) |
(seit C++11)
(noexcept seit C++14) (constexpr seit C++14) |
|
template
<
class
C
>
constexpr
auto
cend
(
const
C
&
c
)
noexcept
(
/* siehe unten */
)
|
(4) | (seit C++14) |
Gibt einen Iterator auf das Ende (d.h. das Element nach dem letzten Element) des gegebenen Bereichs zurück.
Inhaltsverzeichnis |
Parameter
| c | - |
ein Container oder eine View mit einer
end
Memberfunktion
|
| array | - | ein Array beliebigen Typs |
Rückgabewert
Exceptions
Überladungen
Benutzerdefinierte Überladungen von
end
können für Klassen und Aufzählungen bereitgestellt werden, die keine geeignete
end()
Memberfunktion bereitstellen, aber dennoch iteriert werden können. Die folgenden Überladungen werden bereits von der Standardbibliothek bereitgestellt:
|
(C++11)
|
spezialisiert
std::end
(Funktions-Template) |
|
(C++11)
|
spezialisiert
std::end
(Funktions-Template) |
|
Range-basierte for-Schleife Unterstützung
(Funktion) |
|
|
Range-basierte for-Schleife Unterstützung
(Funktion) |
Ähnlich wie die Verwendung von
swap
(beschrieben in
Swappable
) ist die typische Verwendung der
end
-Funktion in generischem Kontext äquivalent zu
using
std
::
end
;
end
(
arg
)
;
, wodurch sowohl die
ADL
-selektierten Überladungen für benutzerdefinierte Typen als auch die Standardbibliothek-Funktionstemplates im selben Überladungssatz erscheinen können.
template<typename Container, typename Function> void for_each(Container&& cont, Function f) { using std::begin; auto it = begin(cont); using std::end; auto end_it = end(cont); for (; it != end_it; ++it) f(*it); }
|
Durch
argument-dependent lookup
gefundene Überladungen von
|
(since C++20) |
Hinweise
Die Nicht-Array-Überladungen spiegeln exakt das Verhalten von C :: end ( ) wider. Ihre Effekte können überraschend sein, wenn die Member-Funktion keine sinnvolle Implementierung besitzt.
std::cend
wurde zur Vereinheitlichung von Member- und Non-Member-Zugriffen auf Bereiche eingeführt. Siehe auch
LWG issue 2128
.
Wenn
C
eine shallow-const-Ansicht ist,
std::cend
kann einen mutable Iterator zurückgeben. Solches Verhalten ist für einige Benutzer unerwartet. Siehe auch
P2276
und
P2278
.
Beispiel
#include <algorithm> #include <iostream> #include <vector> int main() { std::vector<int> v = {3, 1, 4}; if (std::find(std::begin(v), std::end(v), 5) != std::end(v)) std::cout << "Found a 5 in vector v!\n"; int w[] = {5, 10, 15}; if (std::find(std::begin(w), std::end(w), 5) != std::end(w)) std::cout << "Found a 5 in array w!\n"; }
Ausgabe:
Found a 5 in array w!
Siehe auch
|
(C++11)
(C++14)
|
gibt einen Iterator zum Anfang eines Containers oder Arrays zurück
(Funktionstemplate) |
|
(C++20)
|
gibt einen Sentinel zurück, der das Ende eines Bereichs anzeigt
(Anpassungspunktobjekt) |
|
(C++20)
|
gibt einen Sentinel zurück, der das Ende eines schreibgeschützten Bereichs anzeigt
(Anpassungspunktobjekt) |