Namespaces
Variants
Views
Actions

Difference between revisions of "cpp/container/span"

From cppreference.com
< cpp‎ | container
(remove dynamic_extent since Cubbi made a separate page for it)
m (link to ja)
Line 84: Line 84:
 
==={{rl|deduction guides|Deduction guides}}===
 
==={{rl|deduction guides|Deduction guides}}===
  
{{langlinks|zh}}
+
{{langlinks|ja|zh}}

Revision as of 00:19, 6 July 2018

 
 
 
 
Defined in header <span>
template<

    class T,
    std::ptrdiff_t Extent = std::dynamic_extent

> class span;
(since C++20)

The class template span describes an object that can refer to a contiguous sequence of objects with the first element of the sequence at position zero. A span can either have a static extent, in which case the number of elements in the sequence is known and encoded in the type, or a dynamic extent.

A typical implementation holds only two members: a pointer to T and a size.

Contents

Template parameters

T - element type; must be a complete type that is not an abstract class type
Extent - the number of elements in the sequence, or std::dynamic_extent if dynamic; the program is ill-formed if Extent is negative and is not std::dynamic_extent

Member types

Member type Definition
element_type T
value_type std::remove_cv_t<T>
index_type std::ptrdiff_t
difference_type std::ptrdiff_t
pointer T*
reference T&
iterator implementation-defined LegacyRandomAccessIterator, ConstexprIterator, and LegacyContiguousIterator whose value_type is value_type
const_iterator implementation-defined constant LegacyRandomAccessIterator, ConstexprIterator, and LegacyContiguousIterator whose value_type is value_type
reverse_iterator std::reverse_iterator<iterator>
const_reverse_iterator std::reverse_iterator<const_iterator>

Note: iterator is a mutable iterator if T is not const-qualified.

All requirements on the iterator types of a Container applies to the iterator and const_iterator types of span as well.

Member constant

static constexpr std::ptrdiff_t extent = Extent;

Member functions

Template:cpp/container/span/dsc beginTemplate:cpp/container/span/dsc endTemplate:cpp/container/span/dsc rbeginTemplate:cpp/container/span/dsc rendorphaned, replaced with Template:cpp/container/dsc operator_at. orphaned, replaced with Template:cpp/container/dsc data.
constructs a span
(public member function) [edit]
assigns a span
(public member function) [edit]
Iterators
Element access
Observers
(C++20)
returns the number of elements in the sequence
(public member function) [edit]
returns the size of the sequence in bytes
(public member function) [edit]
checks if the sequence is empty
(public member function) [edit]
Subviews
obtains a subspan consisting of the first N elements of the sequence
(public member function) [edit]
obtains a subspan consisting of the last N elements of the sequence
(public member function) [edit]
obtains a subspan
(public member function) [edit]

Non-member functions

Template:cpp/container/span/dsc operator cmp
converts a span into a view of its underlying bytes
(function template) [edit]

Non-member constant

a constant of type std::size_t signifying that the span has dynamic extent
(constant) [edit]

Deduction guides