| std::span::subspan(3) | C++ Standard Libary | std::span::subspan(3) | 
NAME¶
std::span::subspan - std::span::subspan
Synopsis¶
template< std::size_t Offset,
  
   std::size_t Count = std::dynamic_extent > (1)
  
   constexpr std::span<element_type, E /* see below */> subspan() const;
  
   constexpr std::span<element_type, std::dynamic_extent>
  
   subspan( size_type Offset, (2)
  
   size_type Count = std::dynamic_extent ) const;
  
   Obtains a span that is a view over the Count elements of this span starting
    at
  
   offset Offset. If Count is std::dynamic_extent, the number of elements in the
  
   subspan is size() - offset (i.e., it ends at the end of *this.).
  
   (1) is ill-formed if
  
   * Offset is greater than Extent, or
  
   * Count is not std::dynamic_extent and Count is greater than Extent -
  Offset.
  
   The behavior is undefined if either Offset or Count is out of range. This
    happens if
  
   * Offset is greater than size(), or
  
   * Count is not std::dynamic_extent and Count is greater than size() -
  Offset.
  
   The extent E of the span returned by (1) is determined as follows:
  
   * If Count is not std::dynamic_extent, Count;
  
   * Otherwise, if Extent is not std::dynamic_extent, Extent - Offset;
  
   * Otherwise, std::dynamic_extent.
Return value¶
 The requested subspan r, such that r.data() == this->data() +
    Offset. If Count is
  
   std::dynamic_extent, r.size() == this->size() - Offset; otherwise r.size()
    == Count.
Example¶
// Run this code
  
   #include <algorithm>
  
   #include <cstdio>
  
   #include <numeric>
  
   #include <ranges>
  
   #include <span>
  
   void display(std::span<const char> abc)
  
   {
  
   const auto columns{ 20U };
  
   const auto rows{ abc.size() - columns + 1 };
  
   for (auto offset{ 0U }; offset < rows; ++offset) {
  
   std::ranges::for_each(
  
   abc.subspan(offset, columns),
  
   std::putchar
  
   );
  
   std::putchar('\n');
  
   }
  
   }
  
   int main()
  
   {
  
   char abc[26];
  
   std::iota(std::begin(abc), std::end(abc), 'A');
  
   display(abc);
  
   }
Output:¶
 ABCDEFGHIJKLMNOPQRST
  
   BCDEFGHIJKLMNOPQRSTU
  
   CDEFGHIJKLMNOPQRSTUV
  
   DEFGHIJKLMNOPQRSTUVW
  
   EFGHIJKLMNOPQRSTUVWX
  
   FGHIJKLMNOPQRSTUVWXY
  
   GHIJKLMNOPQRSTUVWXYZ
See also¶
 first obtains a subspan consisting of the first N elements of the
    sequence
  
   (public member function)
  
   last obtains a subspan consisting of the last N elements of the sequence
  
   (public member function)
| 2022.07.31 | http://cppreference.com |