std::span
提供: cppreference.com
ヘッダ <span> で定義 | ||
template< class T, | (C++20以上) | |
クラステンプレート span
はオブジェクトの隣接したシーケンスを参照できるオブジェクトを表します。 シーケンスの最初の要素は0の位置です。 span
は静的なエクステントを持つことも動的なエクステントを持つこともできます。 静的なエクステントでは要素数は既知で、型の中にエンコードされます。
一般的な実装では2つのメンバ、 T
へのポインタとサイズだけを持ちます。
目次 |
[編集]テンプレート引数
T | - | 要素の型。 抽象クラス型でない完全型でなければなりません |
Extent | - | シーケンス内の要素の数、または動的な場合は std::dynamic_extent |
[編集]メンバ型
メンバ型 | 定義 |
element_type | T |
value_type | std::remove_cv_t<T> |
size_type | std::size_t |
difference_type | std::ptrdiff_t |
pointer | T* |
const_pointer | const T* |
reference | T& |
const_reference | const T& |
iterator | その value_type が value_type である処理系定義の LegacyRandomAccessIterator かつ ConstexprIterator かつ LegacyContiguousIterator |
reverse_iterator | std::reverse_iterator<iterator> |
ノート: T
が const 修飾されていなければ、 iterator
は可変イテレータです。
Container のイテレータ型に対するすべての要件が span
の iterator
型にも同様に適用されます。
[編集]メンバ定数
staticconstexprstd::size_t extent = Extent; | ||
[編集]メンバ関数
span を構築します (パブリックメンバ関数) | |
span を代入します (パブリックメンバ関数) | |
イテレータ | |
シーケンスの先頭を指すイテレータを返します (パブリックメンバ関数) | |
シーケンスの終端を指すイテレータを返します (パブリックメンバ関数) | |
シーケンスの先頭を指す逆イテレータを返します (パブリックメンバ関数) | |
シーケンスの終端を指す逆イテレータを返します (パブリックメンバ関数) | |
要素アクセス | |
最初の要素にアクセスします (パブリックメンバ関数) | |
最後の要素にアクセスします (パブリックメンバ関数) | |
シーケンスの要素にアクセスします (パブリックメンバ関数) | |
要素のシーケンスの先頭を指すポインタを返します (パブリックメンバ関数) | |
観察 | |
シーケンスの要素数を返します (パブリックメンバ関数) | |
シーケンスのサイズをバイトで返します (パブリックメンバ関数) | |
シーケンスが空かどうか調べます (パブリックメンバ関数) | |
サブビュー | |
シーケンスの最初の N 個の要素から構成されるサブスパンを取得します (パブリックメンバ関数) | |
シーケンスの最後の N 個の要素から構成されるサブスパンを取得します (パブリックメンバ関数) | |
サブスパンを取得します (パブリックメンバ関数) |
[編集]非メンバ関数
span をそのベースとなるバイト列のビューに変換します (関数テンプレート) |
[編集]非メンバ定数
(C++20) | span が動的エクステントを持つことを表す size_t 型の定数 (定数) |
[編集]ヘルパーテンプレート
template<class T, std::size_t Extent> inlineconstexprbool ranges::enable_borrowed_range<std::span<T, Extent>>=true; | ||
std::ranges::enable_borrowed_range のこの特殊化は span
が borrowed_range を満たせるようにします。
template<class T, std::size_t Extent> inlineconstexprbool ranges::enable_view<std::span<T, Extent>>= | ||
std::ranges::enable_view のこの特殊化はゼロまたは動的エクステントの span
が view を満たせるようにします。 非ゼロの静的エクステントの span
は default_initializable でないため view ではありません。