close
Пространства имён
Варианты
Действия

std::array::data

Материал из cppreference.com
 
 
 
 
<tbody> </tbody> <tbody class="t-dcl-rev "> </tbody><tbody> </tbody> <tbody class="t-dcl-rev "> </tbody><tbody> </tbody>
T* data() noexcept;
(начиная с C++11)
(до C++17)
constexpr T* data() noexcept;
(начиная с C++17)
const T* data() const noexcept;
(начиная с C++11)
(до C++17)
constexpr const T* data() const noexcept;
(начиная с C++17)

Возвращает указатель на внутренний массив, выступающий в качестве хранилища элементов. Указатель таков, что диапазон [data(); data() + size()) всегда корректный, даже если контейнер пуст (Указатель data() в таком случае не может быть разыменован).

Параметры

(нет)

Возвращаемое значение

Указатель на внутренний массив. Для непустых контейнеров, возвращаемый указатель является равным адресу первого элемента.

Сложность

Константная.

Примечания

Если size() равен 0, не гарантируется, что data() вернёт нулевой указатель.

Пример

#include <cstddef>
#include <iostream>
#include <span>
#include <array>

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) // Начиная с C++20
{
    std::cout << "data = ";
    for (const int e : data)
        std::cout << e << ' ';
    std::cout << '\n';
}

int main()
{
    std::array<int,4> container { 1, 2, 3, 4 };

    // Использование container.data() предпочтительнее, чем &container[0]
    pointer_func(container.data(), container.size());

    // std::span (C++20) - более безопасная альтернатива указателю и размеру по отдельности.
    span_func({container.data(), container.size()});
}

Вывод:

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

См. также

(C++11)
предоставляет доступ к первому элементу
(public функция-элемент) [править]
(C++11)
предоставляет доступ к последнему элементу
(public функция-элемент) [править]
(C++11)
возвращает количество элементов
(public функция-элемент) [править]
(C++20)
не владеющее представление непрерывной последовательности объектов
(шаблон класса) [править]