std::vector<T,Allocator>::data
Von cppreference.com
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 Speicherelement dient. Der Zeiger ist so beschaffen, dass der Bereich [data(), data() + size()) immer ein gültiger Bereich ist, auch wenn der Container leer ist (data() ist in diesem Fall nicht dereferenzierbar).
Inhalt |
[bearbeiten] Parameter
(keine)
[bearbeiten] Rückgabewert
Zeiger auf den zugrundeliegenden Element-Speicher. Bei nicht leeren Containern ist der zurückgegebene Zeiger gleich der Adresse des ersten Elements.
[bearbeiten] Komplexität
Konstant.
[bearbeiten] Anmerkungen
Wenn size() 0 ist, kann data() einen Nullzeiger zurückgeben oder auch nicht.
[bearbeiten] Beispiel
Führen Sie diesen Code aus
#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
Defect reports
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 | war der Rückgabetyp pointer und const_pointer |
geändert auf T* bzw. const T* |
[bearbeiten] Siehe auch
| Greift auf das erste Element zu (public member function) | |
| Greift auf das letzte Element zu (public member function) | |
| Gibt die Anzahl der Elemente zurück (public member function) | |
| Greift auf ein bestimmtes Element zu (public member function) | |
| (C++20) |
eine nicht besitzende Ansicht über eine zusammenhängende Sequenz von Objekten (class template) |
| (C++17) |
erhält den Zeiger auf das zugrundeliegende Array (function template) |