Namespaces
Variants

std::ranges::view_interface<D>:: data

From cppreference.net
Ranges library
Range adaptors
constexpr auto data ( )
requires std:: contiguous_iterator < ranges:: iterator_t < D >> ;
(1) (seit C++20)
constexpr auto data ( ) const

requires ranges:: range < const D > &&

std:: contiguous_iterator < ranges:: iterator_t < const D >> ;
(2) (seit C++20)

Die Standardimplementierung der data() -Memberfunktion erhält die Adresse, die durch den Beginn-Iterator bezeichnet wird, über std::to_address , was ebenfalls die niedrigste Adresse des zusammenhängenden Speichers (impliziert durch contiguous_iterator ) ist, auf den die Ansicht des abgeleiteten Typs verweist, wenn die Ansicht nicht leer ist.

1) Sei derived gleich static_cast < D & > ( * this ) . Entspricht return std:: to_address ( ranges:: begin ( derived ) ) ; .
2) Gleich wie (1) , außer dass derived static_cast < const D & > ( * this ) ist.

Inhaltsverzeichnis

Rückgabewert

Die Adresse, die durch den Beginn-Iterator bezeichnet wird.

Hinweise

Die folgenden abgeleiteten Typen können die Standardimplementierung von data() verwenden:

Folgende Typen sind von std::ranges::view_interface abgeleitet und deklarieren keine eigene data() Memberfunktion, können jedoch die Standardimplementierung nicht verwenden, da ihre Iteratortypen niemals contiguous_iterator erfüllen:

Beispiel

#include <array>
#include <iostream>
#include <ranges>
#include <string_view>
int main() {
    constexpr std::string_view str { "Hello, C++20!" };
    std::cout << (str | std::views::drop(7)).data() << '\n';
    constexpr static std::array a { 1,2,3,4,5 };
    constexpr auto v { a | std::views::take(3) };
    static_assert( &a[0] == v.data() );
}

Ausgabe:

C++20!

Siehe auch

(C++17)
Ermittelt den Zeiger auf das zugrundeliegende Array
(Funktionstemplate)
Ermittelt einen Zeiger auf den Anfang eines zusammenhängenden Bereichs
(Anpassungspunktobjekt)
Ermittelt einen Zeiger auf den Anfang eines schreibgeschützten zusammenhängenden Bereichs
(Anpassungspunktobjekt)
(C++20)
Ermittelt einen Rohzeiger aus einem zeigerähnlichen Typ
(Funktionstemplate)