Namespaces
Variants

std::inplace_vector<T,N>:: data

From cppreference.net

constexpr T * data ( ) noexcept ;
(1) (seit C++26)
constexpr const T * data ( ) const noexcept ;
(2) (seit C++26)

Gibt einen Zeiger auf das zugrundeliegende Array zurück, das als Elementspeicher dient. Der Zeiger ist so beschaffen, dass der Bereich [ data ( ) , data ( ) + size() ) stets ein gültiger Bereich ist.

Wenn * this leer ist, data() ist nicht dereferenzierbar.

Inhaltsverzeichnis

Rückgabewert

Zeiger auf den zugrundeliegenden Elementspeicher. Für nicht-leere Container vergleicht sich der zurückgegebene Zeiger gleich mit der Adresse des ersten Elements, das heißt data ( ) == std:: addressof ( front ( ) ) ist true .

Komplexität

Konstante.

Hinweise

Wenn * this leer ist, data() kann möglicherweise einen Nullzeiger zurückgeben oder auch nicht.

Beispiel

#include <cstddef>
#include <iostream>
#include <span>
#include <inplace_vector>
void pointer_func(const int* p, std::size_t size)
{
    std::cout << "data = ";
    for (std::size_t i = 0; i < size; ++i)
        std::cout << p[i] << ' ';
    std::cout << '\n';
}
void span_func(std::span<const int> data) // since C++20
{
    std::cout << "data = ";
    for (const int e : data)
        std::cout << e << ' ';
    std::cout << '\n';
}
int main()
{
    std::inplace_vector<int, 4> container{1, 2, 3, 4};
    // Prefer container.data() over &container[0]
    pointer_func(container.data(), container.size());
    // std::span is a safer alternative to separated pointer/size.
    span_func({container.data(), container.size()});
}

Ausgabe:

data = 1 2 3 4
data = 1 2 3 4

Siehe auch

Zugriff auf das erste Element
(öffentliche Elementfunktion)
Zugriff auf das letzte Element
(öffentliche Elementfunktion)
gibt die Anzahl der Elemente zurück
(öffentliche Elementfunktion)
Zugriff auf spezifisches Element
(öffentliche Elementfunktion)
(C++20)
eine nicht-besitzende Ansicht über eine zusammenhängende Objektsequenz
(Klassentemplate)
(C++17)
erhält den Zeiger auf das zugrundeliegende Array
(Funktionstemplate)