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

From cppreference.com
< cpp‎ | container‎ | inplace vector

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

Returns a pointer to the underlying array serving as element storage. The pointer is such that range `[`data()`,` data() +`` size()`)` is always a valid range, even if the container is empty (`data()` is not dereferenceable in that case).

### Parameters

(none)

### Return value

Pointer to the underlying element storage. For non-empty containers, the returned pointer compares equal to the address of the first element, that is data() == std::addressof(front()) is true.

### Complexity

Constant.

### Notes

If size() is ​0​, `data()` may or may not return a null pointer.

### Example

Run this code

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

Output:

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

### See also

front | access the first element (public member function)
back | access the last element (public member function)
size | returns the number of elements (public member function)
operator[] | access specified element (public member function)
span (C++20) | a non-owning view over a contiguous sequence of objects (class template)
data (C++17) | obtains the pointer to the underlying array (function template)

Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/container/inplace_vector/data&oldid=175232"