名前空間
変種
操作

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_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_typevalue_type である処理系定義の LegacyRandomAccessIterator かつ ConstexprIterator かつ LegacyContiguousIterator
reverse_iterator std::reverse_iterator<iterator>

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

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

[編集] メンバ定数

static constexpr std::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>
inline constexpr bool ranges::enable_borrowed_range<std::span<T, Extent>> = true;

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

template<class T, std::size_t Extent>

inline constexpr bool ranges::enable_view<std::span<T, Extent>> =

    Extent == 0 || Extent == dynamic_extent;

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

[編集] 推定ガイド