QVarLengthArray Class
template <typename T, qsizetype Prealloc = QVarLengthArrayDefaultPrealloc> class QVarLengthArrayQVarLengthArray クラスは、低レベルの可変長配列を提供します。詳細...
Header: | #include <QVarLengthArray> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
qmake: | QT += core |
Inherits: | QVLABase and QVLAStorage |
注意:このクラスの関数はすべてリエントラントです。
パブリック型
const_iterator | |
const_pointer | |
const_reference | |
const_reverse_iterator | |
difference_type | |
iterator | |
pointer | |
reference | |
reverse_iterator | |
size_type | |
value_type |
パブリック関数
QVarLengthArray() | |
QVarLengthArray(qsizetype size) | |
QVarLengthArray(std::initializer_list<T> args) | |
QVarLengthArray(InputIterator first, InputIterator last) | |
(since 6.4) | QVarLengthArray(qsizetype size, const T &v) |
QVarLengthArray(const QVarLengthArray<T, Prealloc> &other) | |
(since 6.0) | QVarLengthArray(QVarLengthArray<T, Prealloc> &&other) |
~QVarLengthArray() | |
void | append(const T &t) |
void | append(const T *buf, qsizetype size) |
void | append(T &&t) |
(since 6.6) QVarLengthArray<T, Prealloc> & | assign(std::initializer_list<T> list) |
(since 6.6) QVarLengthArray<T, Prealloc> & | assign(InputIterator first, InputIterator last) |
(since 6.6) QVarLengthArray<T, Prealloc> & | assign(qsizetype n, const T &t) |
const T & | at(qsizetype i) const |
T & | back() |
const T & | back() const |
QVarLengthArray<T, Prealloc>::iterator | begin() |
QVarLengthArray<T, Prealloc>::const_iterator | begin() const |
qsizetype | capacity() const |
QVarLengthArray<T, Prealloc>::const_iterator | cbegin() const |
QVarLengthArray<T, Prealloc>::const_iterator | cend() const |
void | clear() |
QVarLengthArray<T, Prealloc>::const_iterator | constBegin() const |
const T * | constData() const |
QVarLengthArray<T, Prealloc>::const_iterator | constEnd() const |
bool | contains(const AT &value) const |
qsizetype | count() const |
QVarLengthArray<T, Prealloc>::const_reverse_iterator | crbegin() const |
QVarLengthArray<T, Prealloc>::const_reverse_iterator | crend() const |
T * | data() |
const T * | data() const |
(since 6.3) QVarLengthArray<T, Prealloc>::iterator | emplace(QVarLengthArray<T, Prealloc>::const_iterator pos, Args &&... args) |
(since 6.3) T & | emplace_back(Args &&... args) |
bool | empty() const |
QVarLengthArray<T, Prealloc>::iterator | end() |
QVarLengthArray<T, Prealloc>::const_iterator | end() const |
QVarLengthArray<T, Prealloc>::iterator | erase(QVarLengthArray<T, Prealloc>::const_iterator pos) |
QVarLengthArray<T, Prealloc>::iterator | erase(QVarLengthArray<T, Prealloc>::const_iterator begin, QVarLengthArray<T, Prealloc>::const_iterator end) |
T & | first() |
const T & | first() const |
T & | front() |
const T & | front() const |
qsizetype | indexOf(const AT &value, qsizetype from = 0) const |
void | insert(qsizetype i, T &&value) |
void | insert(qsizetype i, const T &value) |
QVarLengthArray<T, Prealloc>::iterator | insert(QVarLengthArray<T, Prealloc>::const_iterator before, qsizetype count, const T &value) |
QVarLengthArray<T, Prealloc>::iterator | insert(QVarLengthArray<T, Prealloc>::const_iterator before, T &&value) |
QVarLengthArray<T, Prealloc>::iterator | insert(QVarLengthArray<T, Prealloc>::const_iterator before, const T &value) |
void | insert(qsizetype i, qsizetype count, const T &value) |
bool | isEmpty() const |
T & | last() |
const T & | last() const |
qsizetype | lastIndexOf(const AT &value, qsizetype from = -1) const |
qsizetype | length() const |
(since 6.8) qsizetype | max_size() const |
void | pop_back() |
void | push_back(const T &t) |
void | push_back(T &&t) |
QVarLengthArray<T, Prealloc>::reverse_iterator | rbegin() |
QVarLengthArray<T, Prealloc>::const_reverse_iterator | rbegin() const |
void | remove(qsizetype i, qsizetype count = 1) |
(since 6.1) qsizetype | removeAll(const AT &t) |
(since 6.1) qsizetype | removeIf(Predicate pred) |
void | removeLast() |
(since 6.1) bool | removeOne(const AT &t) |
QVarLengthArray<T, Prealloc>::reverse_iterator | rend() |
QVarLengthArray<T, Prealloc>::const_reverse_iterator | rend() const |
void | replace(qsizetype i, const T &value) |
void | reserve(qsizetype size) |
void | resize(qsizetype size) |
(since 6.4) void | resize(qsizetype size, const T &v) |
void | shrink_to_fit() |
qsizetype | size() const |
void | squeeze() |
T | value(qsizetype i) const |
T | value(qsizetype i, const T &defaultValue) const |
QVarLengthArray<T, Prealloc> & | operator+=(const T &value) |
QVarLengthArray<T, Prealloc> & | operator+=(T &&value) |
QVarLengthArray<T, Prealloc> & | operator<<(const T &value) |
QVarLengthArray<T, Prealloc> & | operator<<(T &&value) |
(since 6.0) QVarLengthArray<T, Prealloc> & | operator=(QVarLengthArray<T, Prealloc> &&other) |
QVarLengthArray<T, Prealloc> & | operator=(const QVarLengthArray<T, Prealloc> &other) |
QVarLengthArray<T, Prealloc> & | operator=(std::initializer_list<T> list) |
T & | operator[](qsizetype i) |
const T & | operator[](qsizetype i) const |
静的パブリックメンバ
(since 6.8) qsizetype | maxSize() |
関連非会員
(since 6.1) qsizetype | erase(QVarLengthArray<T, Prealloc> &array, const AT &t) |
(since 6.1) qsizetype | erase_if(QVarLengthArray<T, Prealloc> &array, Predicate pred) |
size_t | qHash(const QVarLengthArray<T, Prealloc> &key, size_t seed = 0) |
bool | operator!=(const QVarLengthArray<T, Prealloc1> &left, const QVarLengthArray<T, Prealloc2> &right) |
bool | operator<(const QVarLengthArray<T, Prealloc1> &lhs, const QVarLengthArray<T, Prealloc2> &rhs) |
bool | operator<=(const QVarLengthArray<T, Prealloc1> &lhs, const QVarLengthArray<T, Prealloc2> &rhs) |
bool | operator==(const QVarLengthArray<T, Prealloc1> &left, const QVarLengthArray<T, Prealloc2> &right) |
bool | operator>(const QVarLengthArray<T, Prealloc1> &lhs, const QVarLengthArray<T, Prealloc2> &rhs) |
bool | operator>=(const QVarLengthArray<T, Prealloc1> &lhs, const QVarLengthArray<T, Prealloc2> &rhs) |
詳細説明
C++言語はスタック上の可変長配列をサポートしていない。例えば、以下のコードはコンパイルできません:
int myfunc(int n) { int table[n + 1]; // WRONG ... return table[n]; }
配列をヒープ上に確保する方法もあります(new
を使用):
int myfunc(int n) { int *table = new int[n + 1]; ... int ret = table[n]; delete[] table; return ret; }
しかし、アプリケーションの内部ループからmyfunc()が頻繁に呼び出される場合、ヒープ確保は速度低下の主な原因となる可能性があります。
QVarLengthArrayは、C++言語のこのギャップを回避する試みです。QVarLengthArrayは、スタック上に一定数の要素を確保し、それ以上のサイズに配列のサイズを変更すると、代わりに自動的にヒープを使用します。スタック確保には、ヒープ確保よりもはるかに高速という利点がある。
例
int myfunc(int n) { QVarLengthArray<int, 1024> array(n + 1); ... return array[n]; }
上記の例では、QVarLengthArrayはスタック上に1024個の要素を事前確保し、n + 1
が1024より大きくない限り、それらを使用します。2番目のテンプレート引数を省略すると、QVarLengthArrayのデフォルトの256が使用されます。
QVarLengthArray の値型は、割り当て可能なデータ型でなければなりません。これは、一般的に使用されるほとんどのデータ型をカバーしますが、コンパイラは、例えば、QWidget を値として格納することを許可しません。代わりに、QWidget * を格納します。
QVarLengthArray は、QList と同様に、サイズ変更可能な配列データ構造を提供します。2つのクラスの主な違いは以下のとおりです:
- QVarLengthArray の API はより低レベルで、QList の機能の一部が欠けています。
- QVarLengthArray は、値が基本型の場合、メモリを初期化しません。(QList は常に初期化します。)
- QList は、メモリの最適化として暗黙の共有を使用します。QVarLengthArrayはその機能を提供しませんが、オーバーヘッドが削減されるため、特にタイトなループでは、通常、パフォーマンスがわずかに向上します。
要約すると、QVarLengthArray は低レベルの最適化クラスであり、非常に特殊な場合にのみ意味を持つ。QVarLengthArray は Qt の内部でいくつかの場所で使用されており、上級ユーザーの利便性のために Qt のパブリック API に追加されました。
QListも参照して ください。
メンバ型のドキュメント
[alias]
QVarLengthArray::const_iterator
const T * の型定義。STL との互換性のために提供されます。
[alias]
QVarLengthArray::const_pointer
const T * の型定義.STL との互換性のために提供されます。
[alias]
QVarLengthArray::const_reference
const T & の型定義。STL との互換性のために提供される。
[alias]
QVarLengthArray::const_reverse_iterator
std::reverse_iterator<const T*>
の型定義.STL との互換性のために提供されます.
[alias]
QVarLengthArray::difference_type
ptrdiff_t の型定義.STL との互換性のために提供されます。
[alias]
QVarLengthArray::iterator
T * の型定義.STL との互換性のために提供される。
[alias]
QVarLengthArray::pointer
T * の型定義STL との互換性のために提供されます。
[alias]
QVarLengthArray::reference
T &の型定義STL との互換性のために提供される。
[alias]
QVarLengthArray::reverse_iterator
std::reverse_iterator<T*>
の型定義.STL との互換性のために提供されます。
[alias]
QVarLengthArray::size_type
int の型定義.STL との互換性のために提供されます。
[alias]
QVarLengthArray::value_type
STL との互換性のために提供されます。
メンバ関数ドキュメント
[static constexpr noexcept, since 6.8]
qsizetype QVarLengthArray::maxSize()
[constexpr noexcept, since 6.8]
qsizetype QVarLengthArray::max_size() const
この関数は、配列が理論的に保持できる要素の最大数を返します。実際には、システムで利用可能なメモリ量によって制限されるため、この数はもっと小さくなります。
この関数は Qt 6.8 で導入されました。
void QVarLengthArray::insert(qsizetype i, T &&value)
void QVarLengthArray::insert(qsizetype i, const T &value)
配列のインデックス位置i にvalue を挿入します。i が 0 の場合、値はベクタの先頭に追加されます。i がsize() の場合、値はベクタに追加されます。
大きな配列の場合、この処理には時間がかかります(線形時間)。これは、i 以上のインデックスにあるすべての項目を、メモリ内でさらに 1 つ上の位置に移動する必要があるからです。高速なinsert() 関数を提供するコンテナ・クラスが欲しい場合は、代わりに std::list を使用してください。
remove()も参照 。
QVarLengthArray<T, Prealloc>::iterator QVarLengthArray::insert(QVarLengthArray<T, Prealloc>::const_iterator before, T &&value)
QVarLengthArray<T, Prealloc>::iterator QVarLengthArray::insert(QVarLengthArray<T, Prealloc>::const_iterator before, const T &value)
これはオーバーロードされた関数である。
イテレータbefore が指すアイテムの前にvalue を挿入します。挿入された項目を指すイテレータを返します。
[noexcept]
QVarLengthArray::QVarLengthArray()
初期サイズ 0 の配列を構築します。
[explicit]
QVarLengthArray::QVarLengthArray(qsizetype size)
初期サイズがsize 要素の配列を構築する。
値の型がプリミティブ型(char、int、floatなど)またはポインタ型(QWidget *など)の場合、要素は初期化されない。その他の型の場合、要素はデフォルトで構築された値で初期化されます。
QVarLengthArray::QVarLengthArray(std::initializer_list<T> args)
args で与えられた std::initializer_list から配列を構築する。
template <typename InputIterator, QVarLengthArray<T, Prealloc>::if_input_iterator<InputIterator> = true> QVarLengthArray::QVarLengthArray(InputIterator first, InputIterator last)
イテレータ範囲 [first,last] 内の内容を持つ配列を構築します。
このコンストラクタは、InputIterator
がLegacyInputIterator の要件を満たす場合にのみ、オーバーロード解決に参加します。
InputIterator
の値型は、T
に変換可能でなければなりません。
[explicit, since 6.4]
QVarLengthArray::QVarLengthArray(qsizetype size, const T &v)
v のコピーで満たされた、初期サイズsize の要素を持つ配列を構築します。
注意: このコンストラクタは、T
がコピー構築可能である場合にのみ使用できます。
この関数は Qt 6.4 で導入されました。
size() およびsqueeze()も参照してください 。
QVarLengthArray::QVarLengthArray(const QVarLengthArray<T, Prealloc> &other)
other のコピーを構築します。
[noexcept(...), since 6.0]
QVarLengthArray::QVarLengthArray(QVarLengthArray<T, Prealloc> &&other)
この可変長配列をother から移動します。移動後、other は空になります。
この関数は Qt 6.0 で導入されました。
注意: この関数は、"std::is_nothrow_move_constructible_v<T>" が真である場合、例外をスローしません。
QVarLengthArray::~QVarLengthArray()
配列を破棄します。
void QVarLengthArray::append(const T &t)
項目t を配列に追加し、必要に応じて配列を拡張します。
removeLast()も参照 。
void QVarLengthArray::append(const T *buf, qsizetype size)
buf によって参照される項目size をこの配列に追加します。
void QVarLengthArray::append(T &&t)
この関数は append をオーバーロードする。
注意: append() の lvalue オーバーロードとは異なり、*this
の要素であるオブジェクトへの参照を渡すと、未定義の動作になります:
vla.append(std::move(vla[0])); // BUG: passing an object that is already in the container
[since 6.6]
QVarLengthArray<T, Prealloc> &QVarLengthArray::assign(std::initializer_list<T> list)
このコンテナの内容をlist の要素のコピーで置き換える。
このコンテナのサイズは、list の要素数に等しくなります。
この関数は、list の要素数がコンテナの容量を超える場合にのみメモリを確保します。
この関数は Qt 6.6 で導入されました。
[since 6.6]
template <typename InputIterator, QVarLengthArray<T, Prealloc>::if_input_iterator<InputIterator> = true> QVarLengthArray<T, Prealloc> &QVarLengthArray::assign(InputIterator first, InputIterator last)
このコンテナの内容を、イテレータ範囲 [first,last] 内の要素のコピーで置き換えます。
このコンテナのサイズは、範囲 [first,last] 内の要素数に等しくなります。この関数は、範囲内の要素数がコンテナの容量を超えた場合にのみメモリを確保します。
この関数のオーバーロードは、InputIterator
がLegacyInputIterator の要件を満たす場合にのみ、オーバーロードの解決に参加します。
いずれかの引数が *this へのイテレータである場合の動作は未定義です。
この関数は Qt 6.6 で導入されました。
[since 6.6]
QVarLengthArray<T, Prealloc> &QVarLengthArray::assign(qsizetype n, const T &t)
このコンテナの内容をt のn コピーで置き換えます。
このコンテナのサイズは、n に等しくなります。 この関数は、n がコンテナの容量を超える場合にのみ、メモリを割り当てます。
この関数は Qt 6.6 で導入されました。
const T &QVarLengthArray::at(qsizetype i) const
インデックス位置i にあるアイテムへの参照を返します。
i は、配列の有効なインデックス位置でなければなりません(つまり、0 <= < () )。i size
value() およびoperator[]()も参照 。
T &QVarLengthArray::back()
last() と同じ。STL との互換性のために用意されています。
const T &QVarLengthArray::back() const
これはオーバーロードされた関数です。
QVarLengthArray<T, Prealloc>::iterator QVarLengthArray::begin()
配列の最初の項目を指すSTL 形式のイテレータを返します。
constBegin() およびend()も参照してください 。
QVarLengthArray<T, Prealloc>::const_iterator QVarLengthArray::begin() const
これはオーバーロードされた関数です。
qsizetype QVarLengthArray::capacity() const
再割り当てを強制せずに配列に格納できる要素の最大数を返します。
この関数の唯一の目的は、QVarLengthArray のメモリ使用量を微調整することである。一般に、この関数を呼び出す必要はほとんどありません。配列内の項目数を知りたい場合は、size() を呼び出す。
QVarLengthArray<T, Prealloc>::const_iterator QVarLengthArray::cbegin() const
配列の最初の項目を指すSTL 形式のイテレータを返します。
QVarLengthArray<T, Prealloc>::const_iterator QVarLengthArray::cend() const
配列の最後の項目の次の項目を指す、STL 形式のイテレータを返します。
void QVarLengthArray::clear()
配列からすべての要素を削除します。
resize(0) と同じ。
QVarLengthArray<T, Prealloc>::const_iterator QVarLengthArray::constBegin() const
配列の最初の項目を指すSTL 形式のイテレータを返します。
const T *QVarLengthArray::constData() const
配列に格納されているデータへの const ポインタを返します。このポインタを使用して、配列内の項目にアクセスすることができます。このポインタは、配列が再割り当てされない限り有効です。
この関数は、プレーンな C++ 配列を受け付ける関数に配列を渡す際に有用です。
data() およびoperator[]()も参照 。
QVarLengthArray<T, Prealloc>::const_iterator QVarLengthArray::constEnd() const
配列の最後の項目の後にある架空の項目を指す、STL 形式のイテレータを返します。
constBegin() およびend()も参照 。
template <typename AT = T> bool QVarLengthArray::contains(const AT &value) const
配列にvalue が含まれる場合はtrue
を返し、そうでない場合はfalse
を返す。
この関数は、値型がoperator==()
を実装している必要があります。
indexOf() およびlastIndexOf()も参照 。
qsizetype QVarLengthArray::count() const
size() と同じ。
isEmpty() およびresize() も参照して ください。
QVarLengthArray<T, Prealloc>::const_reverse_iterator QVarLengthArray::crbegin() const
可変長配列の最初の項目を逆順に指す、STL 形式のconst 逆順イテレータを返します。
begin()、rbegin() およびrend()も参照 。
QVarLengthArray<T, Prealloc>::const_reverse_iterator QVarLengthArray::crend() const
可変長配列の最後の項目を指す、STL 形式のconst 逆順イテレータを返します。
T *QVarLengthArray::data()
配列に格納されているデータへのポインタを返します。このポインタを使用して、配列の項目にアクセスしたり変更したりすることができます。
例
QVarLengthArray<int> array(10); int *data = array.data(); for (int i = 0; i < 10; ++i) data[i] = 2 * i;
例:配列が再割り当てされない限り、ポインタは有効です。
この関数は、プレーンな C++ 配列を受け付ける関数に配列を渡すのに便利です。
constData() およびoperator[]()も参照 。
const T *QVarLengthArray::data() const
これはオーバーロードされた関数です。
[since 6.3]
template <typename... Args> QVarLengthArray<T, Prealloc>::iterator QVarLengthArray::emplace(QVarLengthArray<T, Prealloc>::const_iterator pos, Args &&... args)
イテレータpos が指すアイテムの前にアイテムを挿入し、コンストラクタにargs を渡します。
挿入されたアイテムを指すイテレータを返します。
この関数は Qt 6.3 で導入されました。
[since 6.3]
template <typename... Args> T &QVarLengthArray::emplace_back(Args &&... args)
QVarLengthArray args をコンストラクタに渡します。
配置されたアイテムへの参照を返します。
この関数は Qt 6.3 で導入されました。
bool QVarLengthArray::empty() const
配列のサイズが 0 の場合はtrue
を返し、そうでない場合はfalse
を返します。
isEmpty() と同じ。STL との互換性のために提供される。
QVarLengthArray<T, Prealloc>::iterator QVarLengthArray::end()
配列の最後の項目の後の虚数項目を指すSTL 形式のイテレータを返します。
QVarLengthArray<T, Prealloc>::const_iterator QVarLengthArray::end() const
これはオーバーロードされた関数です。
QVarLengthArray<T, Prealloc>::iterator QVarLengthArray::erase(QVarLengthArray<T, Prealloc>::const_iterator pos)
イテレータpos が指す項目を vector から削除し、(end() かもしれない) vector の次の項目へのイテレータを返します。
QVarLengthArray<T, Prealloc>::iterator QVarLengthArray::erase(QVarLengthArray<T, Prealloc>::const_iterator begin, QVarLengthArray<T, Prealloc>::const_iterator end)
これはオーバーロードされた関数です。
begin からend までのすべての項目を削除します。呼び出す前にend が参照していたのと同じ項目へのイテレータを返します。
T &QVarLengthArray::first()
配列の最初の項目への参照を返します。配列は空であってはならない。配列が空になる可能性がある場合は、この関数を呼び出す前にisEmpty() をチェックしてください。
const T &QVarLengthArray::first() const
これはオーバーロードされた関数です。
T &QVarLengthArray::front()
first() と同じ。STL との互換性のために用意されています。
const T &QVarLengthArray::front() const
これはオーバーロードされた関数です。
template <typename AT = T> qsizetype QVarLengthArray::indexOf(const AT &value, qsizetype from = 0) const
インデックス位置from から前方を検索して、配列内で最初に出現するvalue のインデックス位置を返します。一致する項目がない場合は -1 を返します。
この関数は、値型がoperator==()
を実装している必要があります。
lastIndexOf() およびcontains()も参照のこと 。
QVarLengthArray<T, Prealloc>::iterator QVarLengthArray::insert(QVarLengthArray<T, Prealloc>::const_iterator before, qsizetype count, const T &value)
イテレータbefore が指す項目の前にvalue のcount コピーを挿入します。挿入された項目の先頭を指すイテレータを返します。
void QVarLengthArray::insert(qsizetype i, qsizetype count, const T &value)
これはオーバーロードされた関数である。
ベクトルのインデックス位置i にvalue のコピーcount を挿入します。
bool QVarLengthArray::isEmpty() const
配列のサイズが 0 の場合はtrue
を返し、そうでない場合はfalse
を返す。
T &QVarLengthArray::last()
配列の最後の項目への参照を返します。配列は空であってはいけません。配列が空になる可能性がある場合は、この関数を呼び出す前にisEmpty() をチェックしてください。
first() およびisEmpty()も参照して ください。
const T &QVarLengthArray::last() const
これはオーバーロードされた関数です。
template <typename AT = T> qsizetype QVarLengthArray::lastIndexOf(const AT &value, qsizetype from = -1) const
インデックス位置from から後方に検索して、配列内で最後に出現した値value のインデックス位置を返します。from が -1 の場合(デフォルト)、検索は最後の項目から始まります。一致する項目がない場合は -1 を返します。
この関数は、値型がoperator==()
を実装している必要があります。
qsizetype QVarLengthArray::length() const
size() と同じ。
void QVarLengthArray::pop_back()
removeLast() と同じ。STL との互換性のために用意されています。
void QVarLengthArray::push_back(const T &t)
項目t を配列に追加し、必要に応じて配列を拡張します。STL との互換性のために用意されています。
void QVarLengthArray::push_back(T &&t)
この関数は push_back をオーバーロードする。
注意: push_back() の lvalue オーバーロードとは異なり、*this
の要素であるオブジェクトへの参照を渡すと、未定義の動作になります:
vla.push_back(std::move(vla[0])); // BUG: passing an object that is already in the container
QVarLengthArray<T, Prealloc>::reverse_iterator QVarLengthArray::rbegin()
可変長配列の最初の項目を指すSTL 形式の逆順イテレータを返します。
QVarLengthArray<T, Prealloc>::const_reverse_iterator QVarLengthArray::rbegin() const
これはオーバーロードされた関数です。
void QVarLengthArray::remove(qsizetype i, qsizetype count = 1)
これはオーバーロードされた関数です。
インデックス位置i から始まる配列の途中から、count 要素を削除します。
[since 6.1]
template <typename AT = T> qsizetype QVarLengthArray::removeAll(const AT &t)
比較結果がt と等しいすべての要素を配列から削除します。削除された要素があれば、その数を返します。
この関数は Qt 6.1 で導入されました。
removeOne()も参照してください 。
[since 6.1]
template <typename Predicate> qsizetype QVarLengthArray::removeIf(Predicate pred)
述語pred が真を返すすべての要素を配列から削除します。削除された要素があれば、その数を返します。
この関数は Qt 6.1 で導入されました。
removeAll()も参照してください 。
void QVarLengthArray::removeLast()
配列のサイズを1つ減らします。確保されたサイズは変更されません。
append() も参照して ください。
[since 6.1]
template <typename AT = T> bool QVarLengthArray::removeOne(const AT &t)
t と等しい最初の要素を配列から削除します。要素が実際に削除されたかどうかを返します。
この関数は Qt 6.1 で導入されました。
removeAll()も参照してください 。
QVarLengthArray<T, Prealloc>::reverse_iterator QVarLengthArray::rend()
STL 形式の逆イテレータを、可変長配列の最後の項目から逆順に 1 つ前の項目を指して返します。
end(),crend(),rbegin() も参照して ください。
QVarLengthArray<T, Prealloc>::const_reverse_iterator QVarLengthArray::rend() const
これはオーバーロードされた関数です。
void QVarLengthArray::replace(qsizetype i, const T &value)
インデックス位置i の項目をvalue で置き換える。
i は、配列の有効なインデックス位置でなければなりません (つまり、0 <= < ())。i size
operator[]() およびremove()も参照のこと 。
void QVarLengthArray::reserve(qsizetype size)
少なくともsize 要素分のメモリを確保しようとする。配列がどの程度の大きさになるかを事前に知っていれば、この関数を呼び出すことができ、resize() を頻繁に呼び出せば、パフォーマンスが向上する可能性が高い。size が過小評価であった場合、最悪なのはQVarLengthArray が少し遅くなることである。
この関数の唯一の目的は、QVarLengthArray のメモリ使用量を微調整する手段を提供することである。通常、この関数を呼び出す必要はほとんどないだろう。配列のサイズを変更したい場合は、resize() を呼び出す。
void QVarLengthArray::resize(qsizetype size)
配列のサイズをsize に設定します。size が現在のサイズより大きい場合、要素が末尾に追加されます。size が現在のサイズより小さい場合、要素は末尾から削除されます。
値の型がプリミティブ型(char、int、floatなど)またはポインタ型(QWidget *など)の場合、新しい要素は初期化されない。その他の型の場合、要素はデフォルトで構成された値で初期化されます。
[since 6.4]
void QVarLengthArray::resize(qsizetype size, const T &v)
配列のサイズをsize に設定します。size が現在のサイズより大きい場合、v のコピーが末尾に追加されます。size が現在のサイズより小さい場合、末尾から要素が削除されます。
注意: この関数は、T
がコピー構成可能な場合にのみ使用できます。
この関数は Qt 6.4 で導入されました。
size() およびsqueeze()も参照してください 。
void QVarLengthArray::shrink_to_fit()
squeeze() と同じです。STL との互換性のために用意されています。
qsizetype QVarLengthArray::size() const
配列の要素数を返します。
isEmpty() およびresize() も参照して ください。
void QVarLengthArray::squeeze()
解放:項目の格納に不要なメモリを解放します。コンテナがそのストレージをスタック割り当てに収めることができる場合、ヒープ割り当てを解放し、要素をスタックにコピーして戻します。
この関数の唯一の目的は、QVarLengthArray のメモリ使用量を微調整する手段を提供することである。一般に、この関数を呼び出す必要はほとんどない。
reserve()、capacity()、resize()も参照 。
T QVarLengthArray::value(qsizetype i) const
インデックス位置i の値を返す。
インデックスi が範囲外の場合、この関数はデフォルトで構成された値を返します。i が範囲内であることが確実な場合は、代わりにat() を使用すると若干高速になります。
at() およびoperator[]()も参照 。
T QVarLengthArray::value(qsizetype i, const T &defaultValue) const
これはオーバーロードされた関数である。
インデックスi が範囲外の場合、この関数はdefaultValue を返す。
QVarLengthArray<T, Prealloc> &QVarLengthArray::operator+=(const T &value)
value を配列に追加し、このベクトルへの参照を返します。
append() およびoperator<<()も参照 。
QVarLengthArray<T, Prealloc> &QVarLengthArray::operator+=(T &&value)
これはオーバーロードされた関数です。
append() およびoperator<<() も参照 。
QVarLengthArray<T, Prealloc> &QVarLengthArray::operator<<(const T &value)
配列にvalue を追加し、このベクトルへの参照を返します。
append() およびoperator+=() も参照 。
QVarLengthArray<T, Prealloc> &QVarLengthArray::operator<<(T &&value)
これはオーバーロードされた関数です。
append() およびoperator+=() も参照 。
[noexcept(...), since 6.0]
QVarLengthArray<T, Prealloc> &QVarLengthArray::operator=(QVarLengthArray<T, Prealloc> &&other)
Move-この配列にother を代入し、この配列への参照を返します。移動後、other は空になります。
この関数は Qt 6.0 で導入されました。
注意: この関数は、"std::is_nothrow_move_constructible_v<T>" が真の場合、例外をスローしません。
QVarLengthArray<T, Prealloc> &QVarLengthArray::operator=(const QVarLengthArray<T, Prealloc> &other)
other をこの配列に代入し、この配列への参照を返します。
QVarLengthArray<T, Prealloc> &QVarLengthArray::operator=(std::initializer_list<T> list)
list の値をこの配列に代入し、この配列への参照を返す。
T &QVarLengthArray::operator[](qsizetype i)
インデックス位置i にある項目への参照を返す。
i は、配列の有効なインデックス位置でなければならない (すなわち、0 <= < ())。i size
const T &QVarLengthArray::operator[](qsizetype i) const
これはオーバーロードされた関数です。
関連する非メンバ
[since 6.1]
template <typename T, qsizetype Prealloc, typename AT> qsizetype erase(QVarLengthArray<T, Prealloc> &array, const AT &t)
配列array から、比較結果がt と等しい要素をすべて削除します。削除された要素がある場合は、その数を返します。
注意: t がarray 内の要素への参照であることは許されない。そうでないことを確認できない場合は、t のコピーを取り、そのコピーでこの関数を呼び出してください。
この関数は Qt 6.1 で導入されました。
erase_if()も参照してください 。
[since 6.1]
template <typename T, qsizetype Prealloc, typename Predicate> qsizetype erase_if(QVarLengthArray<T, Prealloc> &array, Predicate pred)
リストarray から、述語pred が真を返すすべての要素を削除します。もしあれば、削除された要素の数を返します。
この関数は Qt 6.1 で導入されました。
erase()も参照してください 。
[noexcept(...)]
template <typename T, qsizetype Prealloc> size_t qHash(const QVarLengthArray<T, Prealloc> &key, size_t seed = 0)
seed を計算の種として使用し、key のハッシュ値を返します。
注意: この関数は、"QtPrivate::QNothrowHashable_v<T>" が true の場合、例外をスローしません。
template <typename T, qsizetype Prealloc1, qsizetype Prealloc2> bool operator!=(const QVarLengthArray<T, Prealloc1> &left, const QVarLengthArray<T, Prealloc2> &right)
left とright で指定された 2 つの配列が等しくない場合、true
を返します。
2つの配列が同じ順序で同じ値を含む場合、等しいとみなされます。
この関数は、値型がoperator==()
を実装している必要があります。
operator==()も参照のこと 。
template <typename T, qsizetype Prealloc1, qsizetype Prealloc2> bool operator<(const QVarLengthArray<T, Prealloc1> &lhs, const QVarLengthArray<T, Prealloc2> &rhs)
可変長配列lhs が辞書式に rhsより小さい場合はtrue
を返し、そうでない場合はfalse
を返す。
この関数は、値型がoperator<()
を実装していることを必要とする。
template <typename T, qsizetype Prealloc1, qsizetype Prealloc2> bool operator<=(const QVarLengthArray<T, Prealloc1> &lhs, const QVarLengthArray<T, Prealloc2> &rhs)
可変長配列lhs が辞書式に rhs以下であればtrue
を返し、そうでなければfalse
を返す。
この関数は、値型がoperator<()
を実装していることを必要とする。
template <typename T, qsizetype Prealloc1, qsizetype Prealloc2> bool operator==(const QVarLengthArray<T, Prealloc1> &left, const QVarLengthArray<T, Prealloc2> &right)
left とright で指定される 2 つの配列が等しい場合、true
を返す。
2つの配列が等しいとみなされるのは、同じ順序で同じ値を含む場合である。
この関数は、値型がoperator==()
を実装している必要があります。
operator!=()も参照のこと 。
template <typename T, qsizetype Prealloc1, qsizetype Prealloc2> bool operator>(const QVarLengthArray<T, Prealloc1> &lhs, const QVarLengthArray<T, Prealloc2> &rhs)
可変長配列lhs が辞書式に rhsより大きい場合はtrue
を返し、そうでない場合はfalse
を返す。
この関数は、値型がoperator<()
を実装していることを必要とする。
template <typename T, qsizetype Prealloc1, qsizetype Prealloc2> bool operator>=(const QVarLengthArray<T, Prealloc1> &lhs, const QVarLengthArray<T, Prealloc2> &rhs)
可変長配列lhs が辞書式に rhsより大きいか等しい場合はtrue
を返し、そうでない場合はfalse
を返す。
この関数は、値型がoperator<()
を実装している必要があります。
©2024 The Qt Company Ltd. 本文書に含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。