std:: begin, std:: cbegin
|
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 begin ( C & c ) - > decltype ( c. begin ( ) ) ; |
(1) |
(seit C++11)
(constexpr seit C++17) |
|
template
<
class
C
>
auto begin ( const C & c ) - > decltype ( c. begin ( ) ) ; |
(2) |
(seit C++11)
(constexpr seit C++17) |
|
template
<
class
T,
std::
size_t
N
>
T * begin ( T ( & array ) [ N ] ) ; |
(3) |
(seit C++11)
(noexcept seit C++14) (constexpr seit C++14) |
|
template
<
class
C
>
constexpr
auto
cbegin
(
const
C
&
c
)
noexcept
(
/* siehe unten */
)
|
(4) | (seit C++14) |
Gibt einen Iterator an den Anfang des angegebenen Bereichs zurück.
Inhaltsverzeichnis |
Parameter
| c | - |
ein Container oder eine Ansicht mit einer
begin
Member-Funktion
|
| array | - | ein Array beliebigen Typs |
Rückgabewert
Exceptions
Überladungen
Benutzerdefinierte Überladungen von
begin
können für Klassen und Enumerationen bereitgestellt werden, die keine geeignete
begin()
Memberfunktion bereitstellen, aber dennoch iteriert werden können. Die folgenden Überladungen werden bereits von der Standardbibliothek bereitgestellt:
|
überlädt
std::begin
(Funktions-Template) |
|
|
(C++11)
|
überlädt
std::begin
(Funktions-Template) |
|
Range-basierte for-Schleife Unterstützung
(Funktion) |
|
|
Range-basierte for-Schleife Unterstützung
(Funktion) |
Ähnlich wie bei der Verwendung von
swap
(beschrieben in
Swappable
) ist die typische Verwendung der
begin
-Funktion in einem generischen Kontext äquivalent zu
using
std
::
begin
;
begin
(
arg
)
;
, was sowohl ADL-ausgewählte Überladungen für benutzerdefinierte Typen als auch die Standardbibliothek-Funktionsvorlagen ermöglicht, im selben Überladungssatz zu erscheinen.
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); while (it != end_it) { f(*it); ++it; } }
` und `` Tags wurde nicht übersetzt, wie angefordert
- HTML-Tags, Attribute und Formatierung wurden vollständig beibehalten
- C++-spezifische Begriffe (template, typename, void, auto, while, etc.) wurden nicht übersetzt
- Nur der umgebende Text (die Anweisungen) wurde ins Deutsche übersetzt
|
Durch
argumentabhängige Namenssuche
gefundene Überladungen von
|
(seit C++20) |
Hinweise
Die Nicht-Array-Überladungen spiegeln exakt das Verhalten von
C::begin
wider. Ihre Effekte können überraschend sein, wenn die Memberfunktion keine sinnvolle Implementierung besitzt.
std::cbegin
wurde zur Vereinheitlichung von Member- und Nicht-Member-Zugriffen auf Bereiche eingeführt. Siehe auch
LWG issue 2128
.
Wenn
C
eine shallow-const-Ansicht ist,
std::cbegin
kann einen mutable Iterator zurückgeben. Solches Verhalten ist für einige Benutzer unerwartet. Siehe auch
P2276
und
P2278
.
Beispiel
#include <iostream> #include <iterator> #include <vector> int main() { std::vector<int> v = {3, 1, 4}; auto vi = std::begin(v); std::cout << std::showpos << *vi << '\n'; int a[] = {-5, 10, 15}; auto ai = std::begin(a); std::cout << *ai << '\n'; }
Ausgabe:
+3 -5
Siehe auch
|
(C++11)
(C++14)
|
gibt einen Iterator zum Ende eines Containers oder Arrays zurück
(Funktions-Template) |
|
(C++20)
|
gibt einen Iterator zum Anfang eines Bereichs zurück
(Anpassungspunkt-Objekt) |
|
(C++20)
|
gibt einen Iterator zum Anfang eines schreibgeschützten Bereichs zurück
(Anpassungspunkt-Objekt) |