std::array<T,N>::data
来自cppreference.com
<tbody>
</tbody>
T* data() noexcept; |
(1) | (C++11 起) (C++17 起为 constexpr) |
const T* data() const noexcept; |
(2) | (C++11 起) (C++17 起为 constexpr) |
返回指向作为元素存储工作的底层数组的指针。返回的指针使得范围 [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 相比分开的指针/大小是更安全的选择。
span_func({container.data(), container.size()});
}
输出:
data = 1 2 3 4
data = 1 2 3 4
参阅
| 访问第一个元素 (公开成员函数) | |
| 访问最后一个元素 (公开成员函数) | |
| 返回元素数 (公开成员函数) | |
| 访问指定的元素 (公开成员函数) | |
(C++20) |
连续的对象序列上的无所有权视图 (类模板) |
(C++17) |
获得指向底层数组的指针 (函数模板) |