QSpan Class
template <typename T, std::size_t E> class QSpan連続したデータ上に配置された、所有権を持たないコンテナ。詳細...
| ヘッダー: | #include <QSpan> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
| qmake: | QT += core |
| 以下のように: | Qt 6.7 |
注:このクラスのすべての関数は再入可能である。
パブリック型
| const_iterator | |
| const_pointer | |
| const_reference | |
| const_reverse_iterator | |
| difference_type | |
| element_type | |
| iterator | |
| pointer | |
| reference | |
| reverse_iterator | |
| size_type | |
| value_type |
パブリック関数
| QSpan() | |
| QSpan(QSpan<S, N> other) | |
| QSpan(Range &&r) | |
| QSpan(const std::array<S, N> &arr) | |
| QSpan(q20::type_identity_t<T> (&arr)[N]) | |
| QSpan(std::array<S, N> &arr) | |
| QSpan(std::initializer_list<QSpan<T, E>::value_type> il) | |
| QSpan(std::span<S, N> other) | |
| QSpan(It first, It last) | |
| QSpan(It first, qsizetype count) | |
| QSpan(const QSpan<T, E> &other) | |
| QSpan(QSpan<T, E> &&other) | |
| ~QSpan() | |
| auto | back() const |
| auto | begin() const |
| auto | cbegin() const |
| auto | cend() const |
(since 6.9) void | chop(QSpan<T, E>::size_type n) |
(since 6.9) auto | chopped(QSpan<T, E>::size_type n) const |
| auto | crbegin() const |
| auto | crend() const |
| auto | data() const |
| auto | empty() const |
| auto | end() const |
| auto | first() const |
| auto | first(QSpan<T, E>::size_type n) const |
| auto | front() const |
| auto | isEmpty() const |
| auto | last() const |
| auto | last(QSpan<T, E>::size_type n) const |
| auto | rbegin() const |
| auto | rend() const |
| auto | size() const |
| auto | size_bytes() const |
(since 6.9) void | slice(QSpan<T, E>::size_type pos) |
(since 6.9) void | slice(QSpan<T, E>::size_type pos, QSpan<T, E>::size_type n) |
| auto | sliced(QSpan<T, E>::size_type pos) const |
| auto | sliced(QSpan<T, E>::size_type pos, QSpan<T, E>::size_type n) const |
| auto | subspan() const |
| auto | subspan() const |
| auto | subspan(QSpan<T, E>::size_type pos) const |
| auto | subspan(QSpan<T, E>::size_type pos, QSpan<T, E>::size_type n) const |
| QSpan<T, E> & | operator=(QSpan<T, E> &&other) |
| QSpan<T, E> & | operator=(const QSpan<T, E> &other) |
| QSpan<T, E>::reference | operator[](QSpan<T, E>::size_type idx) const |
静的パブリックメンバー
| const std::size_t | extent |
関連する非メンバー
(since 6.8) auto | as_bytes(QSpan<T, E> s) |
(since 6.8) auto | as_writable_bytes(QSpan<T, E> s) |
詳細な説明
QSpan<T, E> は、T が要素型、E が範囲(要素数、または可変サイズのスパンについてはstd::dynamic_extent )となるテンプレートクラスです。
QSpan は、別の連続したコンテナの連続した領域を参照します。これは、QList や std::vector といった所有コンテナを事前に構築する必要なく、あらゆる種類の連続したコンテナに対するインターフェース型として機能します。
QSpan が参照するデータは、配列(またはQList 、std::vector、QVarLengthArray などの配列互換のデータ構造)として表現される場合があります。QSpan 自体は単にデータへのポインタを格納しているだけであるため、ユーザーは QSpan オブジェクトが参照するデータよりも長く存続しないようにする必要があります。
QStringView 、QLatin1StringView 、QUtf8StringView などのビューとは異なり、参照先のデータは QSpan オブジェクトを介して変更可能です。これを防ぐには、const T 上に QSpan を構築してください(Const and Mutable Spans を参照):
int numbers[] = {0, 1, 2};
QSpan<int> span = numbers;
span[0] = 42;
// numbers == {42, 1, 2};
QSpan<const int> cspan = numbers;
cspan[0] = 0; // ERROR: cspan[0] is read-only可変サイズおよび固定サイズのスパン
QSpanには、固定サイズと可変サイズがあります。
可変サイズのスパンは、上記の例に示されているように、2番目のテンプレート引数を省略するか(あるいはstd::dynamic_extent に設定することで形成されますが、後者はC++20ビルドでのみ利用可能です)。
固定サイズのスパンは、2番目のテンプレート引数として数値を渡すことで形成されます:
その名前が示す通り、固定サイズのスパンでは `size()` がコンパイル時に固定されるのに対し、可変サイズのスパンの `size()` は実行時にのみ決定されます。
固定サイズのスパンは、デフォルトで生成することはできません(extent が0の場合を除く)。可変サイズのスパンはデフォルトで生成可能であり、data() == nullptr とsize() == 0 を持ちます。
固定サイズのスパンは、可変サイズのスパンに暗黙的に変換できます。逆方向(可変長から固定長への変換)については、両方のスパンのサイズが一致していることが前提条件となります。
定数スパンと可変スパン
所有型コンテナとは異なり、QSpan では `const `は浅い(shallow)です。つまり、`const QSpan` を通じてはデータを変更できますが(`QSpan<const T>` を通じては変更できません)、また `const` および `non-const` に対しては `begin()` および `end()` がオーバーロードされていません。ただし、`cbegin()` および `cend()` があり、これらは `T ` が `const` でなくてもデータの変更を防止する `const_iterator` を返します:
int numbers[] = {0, 1, 2};
const QSpan<int> span = numbers;
span.front() = 42; // OK, numbers[0] == 42 now
*span.begin() = 31; // OK, numbers[0] == 31 now
*span.cbegin() = -1; // ERROR: cannot assign through a const_iteratorその他のプロパティ
QSpan は、const への参照ではなく、値渡しで渡す必要があります:
void consume(QSpan<const int> data); // OK
void consume(const QSpan<const int> &data); // works, but is non-idiomatic and less efficientQSpan<T,N> T がリテラル型であるかどうかにかかわらず、QSpanはリテラル型です。
QSpan と std::span の比較
QSpanはstd::spanをモデルにしていますが、いくつかの違いがあり、ここではそれらについて説明します。両者は互いに暗黙的に変換されるため、自身のコードではどちらを使うか自由に選択できます。
- QSpanは
size_typeとして符号付きqsizetypeを使用していますが、std::spanはsize_tを使用しています。 - (Qt 6.9以降)
QSpan<const T>はQtコンテナを分離しませんが、std::spanは分離します。 - すべての QSpan コンストラクタは暗黙的ですが、
std::spanのコンストラクタの多くはexplicitです。 - QSpanはrvalue所有コンテナから構築できますが、
std::spanは構築できません。
最後の2点は、所有型コンテナを受け取っていた関数をQSpanを受け取るように変換する際のソース互換性のために必要であり、これはQtにおいて極めて重要なユースケースです。qsizetypeの使用は、他のQtコンテナとの一貫性を保つためです。 QSpanのテンプレート引数では、不要なエラー条件(負のサイズ)の発生を防ぐため、依然としてsize_tが使用されています。
互換性のあるイテレータ
QSpanは、イテレータとサイズ、あるいはイテレータのペアから構築できますが、そのイテレータが互換性のあるものであることが条件です。将来的には、これはC++20のstd::contiguous_iterator およびstd::sentinel_for を意味することになりますが、Qtは依然としてC++17をサポートしているため、連続したイテレータとして扱われるのは生ポインタのみです。
互換性のある範囲
QSpanは、互換性のある範囲からも構築できます。範囲が互換性を持つとは、compatible iterators を満たす場合を指します。
「 QList 」、「QStringView 」、「QLatin1StringView 」、「QUtf8StringView 」も参照してください 。
メンバ型のドキュメント
[alias] QSpan::const_iterator
それぞれconst T* およびconst_pointer の別名です。
const_pointer 、iterator 、const_reverse_iterator 、およびConst and Mutable Spansも参照してください 。
[alias] QSpan::const_pointer
それぞれ、const T* およびconst element_type* の別名です。
このエイリアスは、STLとの互換性を確保するために提供されています。
element_type 、pointer 、const_reference 、const_iterator 、およびConst and Mutable Spansも参照してください 。
[alias] QSpan::const_reference
それぞれ、const T& およびconst element_type& の別名です。
このエイリアスは、STLとの互換性を確保するために提供されています。
element_type 、reference 、const_pointer 、およびConst and Mutable Spansも参照してください 。
[alias] QSpan::const_reverse_iterator
std::reverse_iterator<const_iterator> の別名です。
const_iterator 、reverse_iterator 、およびConst and Mutable Spansも参照してください 。
[alias] QSpan::difference_type
qptrdiff の別名です。これは differs from std::span。
このエイリアスは、STLとの互換性を確保するために用意されています。
[alias] QSpan::element_type
T の別名です。const (存在する場合)も含まれます。
このエイリアスは、STLとの互換性を確保するために提供されています。
value_type 、pointer 、およびConst and Mutable Spansも参照してください 。
[alias] QSpan::iterator
それぞれ、T* およびpointer の別名です。const が存在する場合は、これも含みます。
pointer 、const_iterator 、reverse_iterator 、およびConst and Mutable Spansも参照してください 。
[alias] QSpan::pointer
それぞれ、T* およびelement_type* の別名です。const が存在する場合は、それを含みます。
このエイリアスは、STLとの互換性を確保するために提供されています。
element_type 、const_pointer 、reference 、iterator 、およびConst and Mutable Spansも参照してください 。
[alias] QSpan::reference
それぞれ、T& およびelement_type& の別名です。const が存在する場合は、それを含みます。
このエイリアスは、STLとの互換性を確保するために提供されています。
element_type 、const_reference 、pointer 、およびConst and Mutable Spansも参照してください 。
[alias] QSpan::reverse_iterator
std::reverse_iterator<iterator> の別名です。const が存在する場合は、それも含まれます。
iterator 、const_reverse_iterator 、およびConst and Mutable Spansも参照してください 。
[alias] QSpan::size_type
qsizetype の別名です。これ differs from std::span。
このエイリアスは、STLとの互換性を確保するために提供されています。
[alias] QSpan::value_type
T の別名です。const が存在する場合、それを除外します。
このエイリアスは、STLとの互換性を確保するために提供されています。
element_type およびConst and Mutable Spansも参照してください 。
メンバ関数のドキュメント
[implicit] QSpan::QSpan()
デフォルトコンストラクタ。
このコンストラクタは、E がゼロ (0) またはstd::dynamic_extent のいずれかである場合にのみ存在します。つまり、固定サイズ(0)または可変サイズのスパンのみがデフォルトで生成可能です。
extent およびVariable-Size and Fixed-Size Spansも参照してください 。
[constexpr noexcept] template <
typename S,
size_t N,
QSpan<T, E>::if_qualification_conversion<S> = true
>
QSpan::QSpan(QSpan<S, N> other)
[constexpr noexcept] template <
typename S,
size_t N,
QSpan<T, E>::if_qualification_conversion<S> = true
>
QSpan::QSpan(std::span<S, N> other)
指定されたspanother 内のデータを参照するQSpan を構築します。
制約
以下のいずれかの場合にのみ、オーバーロード解決の対象となります。
Nまたはextent のいずれかがstd::dynamic_extentまたはextent である場合のみ、オーバーロード解決に参加します。==N- かつ、
Sまたはconst SのいずれかがTと同じである場合。
[constexpr] template <typename Range, QSpan<T, E>::if_compatible_range<Range> = true> QSpan::QSpan(Range &&r)
指定された範囲r 内のデータを参照するQSpanを生成します。
制約
Range がa compatible range である場合にのみ、オーバーロード解決の対象となります。
[constexpr noexcept] template <
typename S,
size_t N,
QSpan<T, E>::if_qualification_conversion<S> = true
>
QSpan::QSpan(const std::array<S, N> &arr)
[constexpr noexcept] template <size_t N> QSpan::QSpan(q20::type_identity_t<T> (&arr)[N])
[constexpr noexcept] template <
typename S,
size_t N,
QSpan<T, E>::if_qualification_conversion<S> = true
>
QSpan::QSpan(std::array<S, N> &arr)
指定された配列 `arr` 内のデータを参照する `QSpan ` を生成します。
注: q20::type_identity_t は、C++20の std::type_identity_t。
制約
xml-ph-0000@deepl.internal または xml-ph-0001@deepl.internal のいずれかが
Nまたはextent のいずれかがstd::dynamic_extentであるか、あるいはextent である場合のみ、オーバーロード解決に参加します。==N- かつ、
Sまたはconst SのいずれかがTと同一である場合。
[constexpr] QSpan::QSpan(std::initializer_list<QSpan<T, E>::value_type> il)
指定された初期化リスト `il` 内のデータを参照する `QSpan` を生成します。
注:この コンストラクタが `noexcept ` となるのは、E が `std::dynamic_extent` の場合に限ります。
注: E がstd::dynamic_extent ではなく、かつil のサイズがE でない場合 、挙動は未定義となります。
制約
T がconst 修飾されている場合にのみ、オーバーロード解決の対象となります。
「Const and Mutable Spans」も参照してください 。
[constexpr] template <typename It, QSpan<T, E>::if_compatible_iterator<It> = true> QSpan::QSpan(It first, It last)
first から始まるデータを参照し、長さが (last -first) である QSpan を構築します。
[first, last) 有効な範囲でなければなりません。
制約
It がa compatible iterator である場合にのみ、オーバーロードの解決に関与します。
[constexpr] template <typename It, QSpan<T, E>::if_compatible_iterator<It> = true> QSpan::QSpan(It first, qsizetype count)
first から始まる、長さがcount のデータを参照する QSpan を生成します。
[first, count) 有効な範囲でなければなりません。
制約
It がa compatible iterator である場合にのみ、オーバーロード解決の対象となります。
[constexpr] auto QSpan::back() const
span の最後の要素への参照を返します。
spanは空であってはなりません。空の場合、動作は未定義となります。
operator[]()、front()、size()、empty()、およびConst and Mutable Spansも参照してください 。
[constexpr noexcept] auto QSpan::begin() const
スパンのはじまりを指すイテレータを返します。
QSpan のイテレータは単なるポインタであるため、これはdata()を呼び出すのと同じです。
end()、cbegin()、rbegin()、crbegin()、data()、およびConst and Mutable Spansも参照してください 。
[constexpr noexcept] auto QSpan::cbegin() const
スパン(span)の先頭を指すconst_iterator を返します。
T がconst でなくても、読み取り専用のイテレータが返されます:
QSpan<int> span = ~~~;
*span.begin() = 42; // OK
*span.cbegin() = 42; // ERROR: cannot assign through a const_iterator関連項目: cend(),begin(),crbegin(),rbegin(),data(), およびConst and Mutable Spans 。
[constexpr noexcept] auto QSpan::cend() const
スパン(span)の末尾の1つ先を指すconst_iterator を返します。
cbegin()、end()、crend()、rend()、data()、size()、およびConst and Mutable Spansも参照してください 。
[constexpr, since 6.9] void QSpan::chop(QSpan<T, E>::size_type n)
*this = chopped( 、n 、) と同様です。
この関数はvariable-sized spans でのみ利用可能です。
この関数は Qt 6.9 で導入されました。
chopped()も参照してください 。
[constexpr, since 6.9] auto QSpan::chopped(QSpan<T, E>::size_type n) const
サイズが `size()` である `variable-sized ` スパンを返します。このスパンは、`n ` を参照し、このスパンの最初の `size()` 要素(`n `)を参照します。
first(size() - n) と同じです。
n は非負でなければなりません。
このスパンには、少なくともn 個の要素が含まれている必要があります(E >=n および size() >=n )。そうでない場合、動作は未定義となります。
この関数は Qt 6.9 で導入されました。
subspan()、first(QSpan<T,E>::size_type)、last(QSpan<T,E>::size_type)、およびchop()も参照してください 。
[constexpr noexcept] auto QSpan::crbegin() const
逆順になった範囲の先頭を指すconst_reverse_iterator を返します。
crend()、rbegin()、cbegin()、begin()、およびConst and Mutable Spansも参照してください 。
[constexpr noexcept] auto QSpan::crend() const
逆順にした範囲の末尾の1つ先を指すconst_reverse_iterator を返します。
crbegin()、rend()、cend()、end()、およびConst and Mutable Spansも参照してください 。
[constexpr noexcept] auto QSpan::data() const
スパンのはじまりへのポインタを返します。
begin() を呼び出すのと同じです。
begin()、front()、およびConst and Mutable Spansも参照してください 。
そのスパンが空であるか、つまり `size() == 0` が真となるかどうかを返します。
これらの関数は同じ動作をします。empty() は STL との互換性のために、isEmpty() は Qt との互換性のために用意されています。
size() およびsize_bytes()も参照してください 。
[constexpr noexcept] auto QSpan::end() const
スパン(span)の末尾の1つ先を指すイテレータを返します。
QSpan のイテレータは単なるポインタであるため、これはdata() + size() を呼び出すのと同じです。
begin()、cend()、rend()、crend()、data()、size()、およびConst and Mutable Spansも参照してください 。
[constexpr noexcept(...)] template <std::size_t Count> auto QSpan::first() const
*this の最初のCount 個の要素を参照する、サイズCount のfixed-sized スパンを返します。
このスパンには、少なくともCount 個の要素が含まれている必要があります(E >=Count かつ size() >=Count )。そうでない場合、挙動は未定義となります。
注: subspan_always_succeeds_v<Count> がtrue の場合、この関数は noexcept です。
関連項目: first(QSpan<T,E>::size_type)、last()、およびsubspan()。
[constexpr] auto QSpan::first(QSpan<T, E>::size_type n) const
*this の最初のn 個の要素を参照する、サイズがn のvariable-sized スパンを返します。
n は非負でなければなりません。
このスパンは、少なくともn 個の要素を保持している必要があります(E >=n かつ size() >=n )。そうでない場合、挙動は未定義となります。
first<N>()、last(QSpan<T,E>::size_type)、subspan(QSpan<T,E>::size_type)、subspan(QSpan<T,E>::size_type, QSpan<T,E>::size_type)、sliced()、およびchopped()も参照してください。
[constexpr] auto QSpan::front() const
span の最初の要素への参照を返します。
spanは空であってはなりません。空の場合、動作は未定義となります。
operator[]()、back()、size()、empty()、およびConst and Mutable Spansも参照してください 。
[constexpr noexcept(...)] template <std::size_t Count> auto QSpan::last() const
*this の最後のCount 個の要素を参照する、サイズがCount のfixed-sized スパンを返します。
このスパンには、少なくともCount 個の要素が含まれている必要があります(E >=Count かつ size() >=Count )。そうでない場合、挙動は未定義となります。
注: subspan_always_succeeds_v<Count> がtrue の場合、この関数は noexcept です。
関連項目: last(QSpan<T,E>::size_type)、first()、およびsubspan()。
[constexpr] auto QSpan::last(QSpan<T, E>::size_type n) const
*this の最後のn 個の要素を参照する、サイズがn のvariable-sized スパンを返します。
n は非負でなければなりません。
このスパンは、少なくともn 個の要素を保持している必要があります(E >=n かつ size() >=n )。そうでない場合、挙動は未定義となります。
last()、first(QSpan<T,E>::size_type)、subspan(QSpan<T,E>::size_type)、subspan(QSpan<T,E>::size_type, QSpan<T,E>::size_type)、sliced()、およびchopped()も参照してください。
[constexpr noexcept] auto QSpan::rbegin() const
逆順になったスパンのはじまりを指すreverse_iterator を返します。
rend()、crbegin()、begin()、cbegin()、およびConst and Mutable Spansも参照してください 。
[constexpr noexcept] auto QSpan::rend() const
逆順のスパン範囲の末尾から1つ先の位置を指すreverse_iterator を返します。
rbegin()、crend()、end()、cend()、およびConst and Mutable Spansも参照してください 。
[constexpr noexcept] auto QSpan::size() const
span のサイズ、つまりそれが参照する要素の数を返します。
size_bytes()、empty()、およびisEmpty()も参照してください 。
[constexpr noexcept] auto QSpan::size_bytes() const
スパンサイズをバイト単位で返します。つまり、要素数にsizeof(T) を乗じた値です。
size()、empty()、およびisEmpty()も参照してください 。
[constexpr, since 6.9] void QSpan::slice(QSpan<T, E>::size_type pos)
*this = sliced( 、pos 、) と同様です。
この関数は、variable-sized spans でのみ利用可能です。
この関数は Qt 6.9 で導入されました。
sliced()も参照してください 。
[constexpr, since 6.9] void QSpan::slice(QSpan<T, E>::size_type pos, QSpan<T, E>::size_type n)
*this = sliced( 、pos 、, 、n 、) と同様です。
この関数は、variable-sized spans でのみ利用可能です。
この関数は Qt 6.9 で導入されました。
sliced()も参照してください 。
[constexpr] auto QSpan::sliced(QSpan<T, E>::size_type pos) const
[constexpr] auto QSpan::subspan(QSpan<T, E>::size_type pos) const
最初のpos 個の要素を削除した後、このスパン残りの部分を参照する、サイズsize() - pos のvariable-sized スパンを返します。
pos は非負でなければなりません。
このスパンには、少なくともpos 個の要素が含まれている必要があります(E >=pos および size() >=pos )。そうでない場合、挙動は未定義となります。
これらの関数は同じ動作をします。subspan() は STL との互換性のために、sliced() は Qt との互換性のために提供されています。
subspan()、first(QSpan<T,E>::size_type)、last(QSpan<T,E>::size_type)、chopped()、およびslice()も参照してください 。
[constexpr] auto QSpan::sliced(QSpan<T, E>::size_type pos, QSpan<T, E>::size_type n) const
[constexpr] auto QSpan::subspan(QSpan<T, E>::size_type pos, QSpan<T, E>::size_type n) const
サイズが `n ` の `variable-sized ` スパンを返し、このスパンの `pos` から始まる `n ` 要素を参照します。
pos およびn は、いずれも非負でなければなりません。
このスパンには、少なくともpos + n 個の要素が含まれている必要があります(E >=pos + n かつ size() >=pos + n )。そうでない場合、挙動は未定義となります。
これらの関数は同じ動作をします:subspan() は STL との互換性のために提供され、sliced() は Qt との互換性のために提供されています。
subspan()、first(QSpan<T,E>::size_type)、last(QSpan<T,E>::size_type)、chopped()、およびslice()も参照してください 。
[constexpr noexcept(...)] template <std::size_t Offset, std::size_t Count> auto QSpan::subspan() const
Offset から始まる、このスパン内のCount 個の要素を参照する、サイズがCount のスパンを返します。
*this が可変サイズのスパンである場合、戻り値の型は可変サイズのスパンとなり、そうでない場合は固定サイズのスパンとなる。
このスパンには、少なくともOffset + Count 個の要素が含まれている必要があります(E >=Offset + Count かつ size() >=Offset + Count )。そうでない場合、挙動は未定義となります。
注: subspan_always_succeeds_v<Offset + Count> がtrue の場合、この関数は noexcept です。
関連項目: subspan(QSpan<T,E>::size_type, QSpan<T,E>::size_type)、first()、last()、およびVariable-Size and Fixed-Size Spans 。
[constexpr noexcept(...)] template <std::size_t Offset> auto QSpan::subspan() const
最初のOffset 個の要素を削除した後の、このスパンを参照するサイズE - Offset のスパンを返します。
*this が可変サイズのスパンである場合、戻り値の型は可変サイズのスパンとなり、そうでない場合は固定サイズのスパンとなります。
このスパンには、少なくともOffset 個の要素が含まれている必要があります(E >=Offset および size() >=Offset )。そうでない場合、挙動は未定義となります。
注: subspan_always_succeeds_v<Offset> がtrue の場合、この関数は noexcept です。
関連項目: subspan(QSpan<T,E>::size_type)、subspan()、first()、last()、およびVariable-Size and Fixed-Size Spans 。
[implicit] QSpan<T, E> &QSpan::operator=(QSpan<T, E> &&other)
[implicit] QSpan::~QSpan()
[implicit] QSpan<T, E> &QSpan::operator=(const QSpan<T, E> &other)
[implicit] QSpan::QSpan(QSpan<T, E> &&other)
[implicit] QSpan::QSpan(const QSpan<T, E> &other)
これらの特別なメンバー関数は、暗黙的に定義されています。
[constexpr] QSpan<T, E>::reference QSpan::operator[](QSpan<T, E>::size_type idx) const
span 内のインデックスidx にある要素への参照を返します。
インデックスは範囲内である必要があります。つまり、idx >= 0 かつidx <size() でなければなりません。そうでない場合、動作は未定義となります。
front()、back()、size()、empty() およびConst and Mutable Spansも参照してください 。
メンバ変数のドキュメント
const std::size_t QSpan::extent
QSpan<T, E> の2番目のテンプレート引数、つまりE です。これは、variable-sized spans の場合、std::dynamic_extent となります。
注: QSpan の他のすべてのサイズおよびインデックスは qsizetypeを使用していますが 、この変数はE と同様に、実際にはsize_t 型であり、これはstd::span およびstd::dynamic_extent との互換性を保つためです。
size()も参照してください 。
関連する非メンバー
[noexcept, since 6.8] auto as_bytes(QSpan<T, E> s)
s を、size() の値がs.size_bytes() となるQSpan<const std::byte, E'> として返します。
E がstd::dynamic_extent である場合、E' も同様に となります。そうでない場合は、E' = E * sizeof(T) となります。
注: q20::dynamic_extent は、C++20の std::dynamic_extentのC++17向けバックポートです。
この関数は Qt 6.8 で導入されました。
as_writable_bytes()、size_bytes()、およびConst and Mutable Spansも参照してください 。
[noexcept, since 6.8] auto as_writable_bytes(QSpan<T, E> s)
s を、size() の値がs.size_bytes() となるQSpan<std::byte, E'> として返します。
E がstd::dynamic_extent である場合、E' も となります。そうでない場合は、E' = E * sizeof(T) となります。
注: q20::dynamic_extent は、C++20の std::dynamic_extentのC++17向けバックポートです。
制約
!std::is_const_v<T> の場合にのみ、オーバーロード解決の対象となります。
この関数は Qt 6.8 で導入されました。
as_bytes()、size_bytes()、およびConst and Mutable Spansも参照してください 。
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.