Namespaces
Variants

std::ranges::drop_view<V>::begin

Von de.cppreference.net
 
 
Bereiche-Bibliothek
Bereichsadapter
 
 
constexpr auto begin()
    requires (!(/*simple-view*/<V> &&
                 ranges::random_access_range<const V> &&
                 ranges::sized_range<const V>));
(1) (seit C++20)
constexpr auto begin() const
    requires ranges::random_access_range<const V> &&
             ranges::sized_range<const V>;
(2) (seit C++20)

Gibt einen Iterator zum ersten Element der drop_view zurück, das heißt, einen Iterator zum Nten Element der zugrunde liegenden Ansicht oder zum Ende der zugrunde liegenden Ansicht, wenn sie weniger als N Elemente enthält.

Falls V keine random_access_range oder eine sized_range ist, wird, um die durch das range-Konzept geforderte amortisierte konstante Zeitkomplexität zu gewährleisten, das Ergebnis bei Überladung (1) innerhalb des zugrunde liegenden cache_-Objekts zwischengespeichert für die Verwendung bei nachfolgenden Aufrufen.

Rückgabewert

ranges:: next ( ranges:: begin ( base_ ) , count_ , ranges:: end ( base_ ) ) .

Beispiel

#include <array>
#include <concepts>
#include <iostream>
#include <iterator>
#include <ranges>
void println(std::ranges::range auto const& range)
{
    for (auto const& elem : range)
        std::cout << elem;
    std::cout << '\n';
}
int main()
{
    std::array hi{'H', 'e', 'l', 'l', 'o', ',', ' ', 'C', '+', '+', '2', '0', '!'};
    println(hi);
    const auto pos = std::distance(hi.begin(), std::ranges::find(hi, 'C'));
    auto cxx = std::ranges::drop_view{hi, pos};
    std::cout << "*drop_view::begin() == '" << *cxx.begin() << "'\n";
//  *cxx.begin() = 'c'; // undefined: 'views' are to be used as observers
    println(cxx);
}

Ausgabe:

Hello, C++20!
*drop_view::begin() == 'C'
C++20!

Fehlerberichte

Die folgenden verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.

DR Angewendet auf Veröffentlichtes Verhalten Korrektes Verhalten
LWG 3482 C++20 die const-Überladung kann mit unsized ranges aufgerufen werden die const-Überladung erfordert sized_range

Siehe auch

gibt einen Iterator oder Sentinel zum Ende zurück
(öffentliche Elementfunktion)
gibt einen Iterator zum Anfang eines Ranges zurück
(Customization Point Object)
gibt einen Sentinel zurück, der das Ende eines Ranges anzeigt
(Customization Point Object)