名前空間
変種

std::span<T,Extent>::span

提供: cppreference.com
<tbody> </tbody>
constexpr span() noexcept;
(1)
constexpr span(pointer ptr, size_type count);
(2)
constexpr span(pointer first, pointer last);
(3)
template <std::size_t N> constexpr span(element_type (&arr)[N]) noexcept;
(4)
template <std::size_t N> constexpr span(std::array<value_type, N>& arr) noexcept;
(5)
template <std::size_t N> constexpr span(const std::array<value_type, N>& arr) noexcept;
(6)
template <class Container> constexpr span(Container& cont);
(7)
template <class Container> constexpr span(const Container& cont);
(8)
template <class U, std::size_t N> constexpr span(const std::span<U, N>& s) noexcept;
(9)
constexpr span(const span& other) noexcept = default;
(10)

span を構築します。

1) 空のスパンを構築します。 data() == nullptr および size() == 0 となります。 このオーバーロードは、extent == 0 || extent == std::dynamic_extent である場合にのみ、オーバーロード解決に参加します。
2) 範囲 [ptr, ptr + count) に対するビューとなるスパンを構築します。 結果のスパンは data() == ptr および size() == count となります。 [ptr, ptr + count) が有効な範囲でない場合、または extent != std::dynamic_extent && count != extent の場合、動作は未定義です。
3) 範囲 [first, last) に対するビューとなるスパンを構築します。 span(first, last - first) と同等です。
4-6) 配列 arr に対するビューとなるスパンを構築します。 結果のスパンは size() == N および data() == std::data(arr) となります。 これらのオーバーロードは、extent == std::dynamic_extent || N == extenttrue であり、 std::remove_pointer_t<decltype(std::data(arr))>(*)[]element_type (*)[] に変換可能である場合にのみ、オーバーロード解決に参加します。
7-8) 範囲 [std::data(cont), std::data(cont) + std::size(cont)) に対するビューとなるスパンを構築します。 結果のスパンは size() == std::size(cont) および data() == std::data(cont) となります。 それが有効な範囲でない場合、または extent != std::dynamic_extent && std::size(cont) != extent となる場合、動作は未定義です。

これらのオーバーロードは、

  • Containerstd::span の特殊化でなく、 std::array の特殊化であるか配列型である
  • std::data(cont) および std::size(cont) がどちらも well-formed である
  • std::remove_pointer_t<decltype(std::data(cont))>(*)[]element_type (*)[] に変換可能である
場合にのみ、オーバーロード解決に参加します
9) 別のスパンからの変換コンストラクタ。 結果のスパンは size() == s.size() および data() == s.data() となります。 このオーバーロードは、extent == std::dynamic_extent || N == extenttrue であり、 U (*)[]element_type (*)[] に変換可能である場合にのみ、オーバーロード解決に参加します。
10) デフォルト化されたコピーコンストラクタ。 サイズとデータポインタをコピーします。 結果のスパンは size() == other.size() および data() == other.data() となります。

引数

ptr, first - シーケンスの最初の要素を指すポインタ
count - シーケンスの要素数
last - シーケンスの最後の要素の次のポインタ
arr - ビューを構築する配列
cont - ビューを構築するコンテナ
s - 変換元の別のスパン
other - コピー元の別のスパン

例外

2-3) 例外を投げません。
7-8) std::size(cont) および std::data(cont) が例外を投げた場合、それを投げます。

関連項目

要素のシーケンスの先頭を指すポインタを返します
(パブリックメンバ関数) [edit]
シーケンスの要素数を返します
(パブリックメンバ関数) [edit]
span を代入します
(パブリックメンバ関数) [edit]
(C++17)(C++20)
コンテナまたは配列のサイズを返します
(関数テンプレート) [edit]
(C++17)
ベースとなる配列を指すポインタを取得します
(関数) [edit]