# std::span<T,Extent>::subspan

< cpp‎ | container‎ | span

template< std::size_t Offset, std::size_t Count = std::dynamic_extent > constexpr std::span<element_type, E /* see below */> subspan() const; | (1) |
constexpr std::span<element_type, std::dynamic_extent> subspan( std::size_t Offset, std::size_t Count = std::dynamic_extent ) const; | (2) |

获得 span ，它是此 span 的始于偏移 `Offset` 的 `Count` 个元素上的视图。若 `Count` 为 `std::dynamic_extent` ，则子段中的元素数为 `size() - offset` （即它结束于 `*this` 的结尾）。

若

- `Offset` 大于 `Extent` ，或
- `Count` 不是 `std::dynamic_extent` 且 `Count` 大于 `Extent - Offset`

则 (1) 为谬构。

若 `Offset` 或 `Count` 在范围外则行为未定义。若出现以下条件则这会发生：

- `Offset` 大于 `size()` ；
- `Count` 非 `std::dynamic_extent` 且 `Count` 大于 `size() - Offset` 。

按下列方式确定 (1) 所返回的 span 的长度模板实参 `E` ：

- 若 `Count` 不是 `std::dynamic_extent` 则为 `Count` ；
- 否则，若 `Extent` 不是 `std::dynamic_extent` ，则为 `Extent - Offset` ；
- 否则为 `std::dynamic_extent` 。

### 返回值

请求的子段 `r` ，满足 r.data() == this->data() + Offset 。若 `Count` 为 `std::dynamic_extent` ，则 r.size() == this->size() - Offset ；否则 r.size() == Count 。

### 参阅

first | 获得由序列首 N 个元素组成的子段 (公开成员函数)
last | 获得由序列末 N 个元素组成的子段 (公开成员函数)