Namespaces
Variants

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

From cppreference.net
Ranges library
Range adaptors
constexpr auto begin ( )

erfordert ( ! ( /*simple-view*/ < V > &&
ranges:: random_access_range < const V > &&

ranges:: sized_range < const V > ) ) ;
(1) (seit C++20)
constexpr auto begin ( ) const

erfordert ranges:: random_access_range < const V > &&

ranges:: sized_range < const V > ;
(2) (seit C++20)

Gibt einen Iterator auf das erste Element der drop_view zurück, also einen Iterator auf das N te Element der zugrundeliegenden Ansicht, oder auf das Ende der zugrundeliegenden Ansicht, falls diese weniger als N Elemente besitzt.

Wenn V kein random_access_range oder kein sized_range ist, speichert die Überladung (1) das Ergebnis innerhalb des zugrundeliegenden cache_ -Objekts zwischen, um die für das range -Konzept erforderliche amortisierte konstante Zeitkomplexität bei nachfolgenden Aufrufen zu gewährleisten.

Inhaltsverzeichnis

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)