std::span<T,Extent>::span_C++中文网
| constexpr span() noexcept; |
(1) | |
| template <class It> |
(2) | |
| template <class It, class End> |
(3) | |
| template <std::size_t N> |
(4) | |
| template <class U, std::size_t N> |
(5) | |
| template <class U, std::size_t N> |
(6) | |
| template <class R> |
(7) | |
| template <class U, std::size_t N> |
(8) | |
| constexpr span(const span& other) noexcept = default; |
(9) | |
构造 span 。
1) 构造空 span 使其 data() == nullptr 而 size() == 0 。此重载仅若extent == 0 || extent == std::dynamic_extent才参与重载决议。
2) 构造作为范围 [first, first + count) 上的视图的 span ;产生的 span 有 data() == std::to_address(first) 与 size() == count 。若 [first, first + count) 不是合法范围,若 It 不实际实现
或若 extent != std::dynamic_extent && count != extent 则行为未定义。这些重载仅若
It满足 contiguous_iterator- 从 std::iter_reference_t<It> 到 element_type 的转换至多为限定转换才参与重载决议。
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 (*)[] 才参与重载决议。这些构造函数模板决不用于类模板实参推导。
8) 从另一 span s 的转换构造函数;产生的 span 有 size() == s.size() 与 data() == s.data() 。此重载仅若extent == std::dynamic_extent || N == extent 为 true 且 U (*)[] 可转换为 element_type (*)[] 才参与重载决议。
9) 默认化的赋值构造函数复制大小与数据指针;产生的 span 有 size() == other.size() 与 data() == other.data() 。
参数
| first | - | 指向序列首元素的迭代器 |
| count | - | 序列的元素数 |
| last | - | 指向序列末元素后一位置的迭代器或另一哨位 |
| arr | - | 用于构造视图的数组 |
| r | - | 用于构造视图的范围 |
| s | - | 要转换的另一 span |
| other | - | 要复制的另一 span |
异常
2) 不抛出。
3) 在抛出时 last - first 抛出其所抛出的异常。
7) 在 std::ranges::size(r) 与 std::ranges::data(r) 抛出时抛出其所抛出的异常。
参阅
| 返回指向元素序列起始的指针 (公开成员函数) | |
| 返回序列中的元素数 (公开成员函数) | |
赋值 span (公开成员函数) | |
| 返回容器或数组的大小 (函数模板) | |
| 获得指向底层数组的指针 (函数模板) |