std::span<T,Extent>::span
来自cppreference.com
constexpr span() noexcept; |
(1) | |
constexpr span(pointer ptr, size_type count); |
(2) | |
constexpr span(pointer first, pointer last); |
(3) | |
template <std::size_t N> constexpr span(element_type (&arr)[N]) noexcept; |
(4) | |
template <std::size_t N> constexpr span(std::array<value_type, N>& arr) noexcept; |
(5) | |
template <std::size_t N> constexpr span(const std::array<value_type, N>& arr) noexcept; |
(6) | |
template <class Container> constexpr span(Container& cont); |
(7) | |
template <class Container> constexpr span(const Container& cont); |
(8) | |
template <class U, std::size_t N> constexpr span(const std::span<U, N>& s) noexcept; |
(9) | |
constexpr span(const span& other) noexcept = default; |
(10) | |
构造 span
。
1) 构造空 span ,其 data() == nullptr , size() == 0 。此重载仅若extent == 0 || extent == std::dynamic_extent 才参与重载决议。
2) 构造作为范围
[ptr, ptr + count)
上视图的 span ;产生的 span 有 data() == ptr 和 size() == count 。若 [ptr, ptr + count)
不是合法范围或若 extent != std::dynamic_extent && count != extent 则行为未定义。3) 构造作为范围
[first, last)
上视图的 span ;等价于 span(first, last - first) 。4-6) 构造作为数组
arr
上的视图的 span ;产生的 span 有 size() == N 和 data() == std::data(arr) 。这些重载仅若 extent == std::dynamic_extent || N == extent 为 true 且 std::remove_pointer_t<decltype(std::data(arr))>(*)[] 可转换为 element_type (*)[] 才参与重载决议。7-8) 构造作为范围 [std::data(cont), std::data(cont) + std::size(cont)) 上视图的 span ;产生的 span 有 size() == std::size(cont) 和 data() == std::data(cont) 。若它不是合法范围或若 extent != std::dynamic_extent && std::size(cont) != extent 则行为未定义。
这些重载仅若
-
Container
不是std::span
的特化、 std::array 的特化或数组类型; - std::data(cont) 与 std::size(cont) 均为良式;及
- std::remove_pointer_t<decltype(std::data(cont))>(*)[] 可转换为 element_type (*)[] 。
-
9) 源自另一 span
s
的转换构造函数;产生的 span 有 size() == s.size() 和 data() == s.data() 。此重载仅若 extent == std::dynamic_extent || N == extent 为 true 且 U (*)[] 可转换为 element_type (*)[] 才参与重载决议。10) 默认化的复制构造函数复制大小和数据指针;产生的 span 有 size() == other.size() 和 data() == other.data() 。
参数
ptr, first | - | 指向序列首元素的指针 |
count | - | 序列中的元素数 |
last | - | 指向序列尾后一位置的指针 |
arr | - | 要为之构造视图的数组 |
cont | - | 要为之构造视图的容器 |
s | - | 要自之转换的另一 span |
other | - | 要复制的另一 span |
异常
2-3) 不抛出。
参阅
返回指向元素序列起始的指针 (公开成员函数) | |
返回序列中的元素数 (公开成员函数) | |
赋值 span (公开成员函数) | |
(C++17)(C++20) |
返回容器或数组的大小 (函数模板) |
(C++17) |
获得指向底层数组的指针 (函数模板) |