Namensräume
Varianten
Aktionen

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

Von cppreference.com
 
 
Bereichsbibliothek
Range-Adaptoren
 
 
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 Member-Funktion data() ermittelt die vom Anfangs-Iterator bezeichnete Adresse über std::to_address, was auch die niedrigste Adresse des zusammenhängenden Speichers ist (impliziert durch contiguous_iterator), auf den sich die View des abgeleiteten Typs bezieht, wenn die View nicht leer ist.

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

Inhalt

[edit] Parameter

(keine)

[edit] Rückgabewert

Die vom Anfangs-Iterator bezeichnete Adresse.

[edit] Hinweise

Folgende abgeleitete Typen können die Standardimplementierung von data() verwenden

Folgende Typen leiten sich von std::ranges::view_interface ab und deklarieren keine eigene data()-Memberfunktion, können aber die Standardimplementierung nicht verwenden, da ihre Iterator-Typen niemals contiguous_iterator erfüllen.

[edit] 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!

[edit] Siehe auch

(C++17)
erhält den Zeiger auf das zugrundeliegende Array
(function template) [bearbeiten]
ruft einen Zeiger auf den Anfang eines zusammenhängenden Ranges ab
(Customization Point Objekt)[edit]
ruft einen Zeiger auf den Anfang eines schreibgeschützten zusammenhängenden Ranges ab
(Customization Point Objekt)[edit]
ermöglicht den Zugriff auf einen Rohzeiger von einem zeigerähnlichen Typ
(Funktions-Template) [edit]