Namespaces
Variants

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

From cppreference.net

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

Devuelve un puntero al array subyacente que sirve como almacenamiento de elementos. El puntero es tal que el rango [ data ( ) , data ( ) + size() ) es siempre un rango válido

Si * this está vacío, data() no es desreferenciable.

Contenidos

Valor de retorno

Puntero al almacenamiento subyacente de elementos. Para contenedores no vacíos, el puntero devuelto se compara igual a la dirección del primer elemento.

Complejidad

Constante.

Notas

Si * this está vacío, data() puede o no devolver un puntero nulo.

Ejemplo

#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()});
}

Salida:

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

Informes de defectos

Los siguientes informes de defectos que modifican el comportamiento se aplicaron retroactivamente a los estándares de C++ publicados anteriormente.

DR Aplicado a Comportamiento publicado Comportamiento correcto
LWG 464 C++98 vector no tenía esta función miembro añadido
LWG 1312 C++98 el tipo de retorno era pointer y const_pointer cambiado a T * y const T * respectivamente

Véase también

acceder al primer elemento
(función miembro pública)
acceder al último elemento
(función miembro pública)
devuelve el número de elementos
(función miembro pública)
acceder al elemento especificado
(función miembro pública)
(C++20)
una vista no propietaria sobre una secuencia contigua de objetos
(plantilla de clase)
(C++17)
obtiene el puntero al array subyacente
(plantilla de función)