Namespaces
Variants

std::vector<T,Allocator>:: data

From cppreference.net

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

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 Element-Speicher. Für nicht-leere Container vergleicht sich der zurückgegebene Zeiger gleich mit der Adresse des ersten Elements.

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 <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::vector<int> 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

Fehlerberichte

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

DR Angewendet auf Verhalten wie veröffentlicht Korrigiertes Verhalten
LWG 464 C++98 vector hatte diese Memberfunktion nicht hinzugefügt
LWG 1312 C++98 die Rückgabetypen waren pointer und const_pointer geändert zu T * und const T * entsprechend

Siehe auch

greift auf das erste Element zu
(öffentliche Elementfunktion)
greift auf das letzte Element zu
(öffentliche Elementfunktion)
gibt die Anzahl der Elemente zurück
(öffentliche Elementfunktion)
greift auf das angegebene Element zu
(ö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)