名前空間
変種
操作

std::span

提供: cppreference.com
< cpp‎ | container
ヘッダ <span> で定義
template<

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

>class span;
(C++20以上)

クラステンプレート span はオブジェクトの隣接したシーケンスを参照できるオブジェクトを表します。 シーケンスの最初の要素は0の位置です。 span静的なエクステントを持つことも動的なエクステントを持つこともできます。 静的なエクステントでは要素数は既知で、型の中にエンコードされます。

一般的な実装では2つのメンバ、 T へのポインタとサイズだけを持ちます。

目次

[編集]テンプレート引数

T - 要素の型。 抽象クラス型でない完全型でなければなりません
Extent - シーケンス内の要素の数、または動的な場合は std::dynamic_extent

[編集]メンバ型

メンバ型 定義
element_typeT
value_typestd::remove_cv_t<T>
size_typestd::size_t
difference_typestd::ptrdiff_t
pointerT*
const_pointerconst T*
referenceT&
const_referenceconst T&
iterator その value_typevalue_type である処理系定義の LegacyRandomAccessIterator かつ ConstexprIterator かつ LegacyContiguousIterator
reverse_iteratorstd::reverse_iterator<iterator>

ノート: T が const 修飾されていなければ、 iterator は可変イテレータです。

Container のイテレータ型に対するすべての要件が spaniterator 型にも同様に適用されます。

[編集]メンバ定数

staticconstexprstd::size_t extent = Extent;

[編集]メンバ関数

span を構築します
(パブリックメンバ関数)[edit]
span を代入します
(パブリックメンバ関数)[edit]
イテレータ
シーケンスの先頭を指すイテレータを返します
(パブリックメンバ関数)[edit]
シーケンスの終端を指すイテレータを返します
(パブリックメンバ関数)[edit]
シーケンスの先頭を指す逆イテレータを返します
(パブリックメンバ関数)[edit]
シーケンスの終端を指す逆イテレータを返します
(パブリックメンバ関数)[edit]
要素アクセス
最初の要素にアクセスします
(パブリックメンバ関数)[edit]
最後の要素にアクセスします
(パブリックメンバ関数)[edit]
シーケンスの要素にアクセスします
(パブリックメンバ関数)[edit]
要素のシーケンスの先頭を指すポインタを返します
(パブリックメンバ関数)[edit]
観察
シーケンスの要素数を返します
(パブリックメンバ関数)[edit]
シーケンスのサイズをバイトで返します
(パブリックメンバ関数)[edit]
シーケンスが空かどうか調べます
(パブリックメンバ関数)[edit]
サブビュー
シーケンスの最初の N 個の要素から構成されるサブスパンを取得します
(パブリックメンバ関数)[edit]
シーケンスの最後の N 個の要素から構成されるサブスパンを取得します
(パブリックメンバ関数)[edit]
サブスパンを取得します
(パブリックメンバ関数)[edit]

[編集]非メンバ関数

span をそのベースとなるバイト列のビューに変換します
(関数テンプレート)[edit]

[編集]非メンバ定数

span が動的エクステントを持つことを表す size_t 型の定数
(定数)[edit]

[編集]ヘルパーテンプレート

template<class T, std::size_t Extent>
inlineconstexprbool ranges::enable_borrowed_range<std::span<T, Extent>>=true;

std::ranges::enable_borrowed_range のこの特殊化は spanborrowed_range を満たせるようにします。

template<class T, std::size_t Extent>

inlineconstexprbool ranges::enable_view<std::span<T, Extent>>=

    Extent ==0|| Extent == dynamic_extent;

std::ranges::enable_view のこの特殊化はゼロまたは動的エクステントの spanview を満たせるようにします。 非ゼロの静的エクステントの spandefault_initializable でないため view ではありません。

[編集]推定ガイド

close