QVarLengthArray Class
template <typename T, qsizetype Prealloc = QVarLengthArrayDefaultPrealloc> class QVarLengthArrayQVarLengthArray クラスは、低レベルの可変長配列を提供します。詳細...
ヘッダー | #include <QVarLengthArray> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
qmake: | QT += core |
継承: | QVLABase および 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>
がtrue
のとき noexcept となります。
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 形式のイテレータを返します。
begin() およびconstEnd()も参照 ください。
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() と同じ。
QVarLengthArray<T, Prealloc>::const_reverse_iterator QVarLengthArray::crbegin() const
可変長配列の最初の項目を逆順で指す、STL 形式のconst 逆順イテレータを返します。
QVarLengthArray<T, Prealloc>::const_reverse_iterator QVarLengthArray::crend() const
constSTL 形式の逆順イテレータで、可変長配列の最後の項目から逆順に 1 つ前の項目を指します。
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() をチェックしてください。
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 つ前の項目を指すように返します。
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
配列の要素数を返します。
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>
がtrue
の場合は noexcept となります。
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 のハッシュ値を返す。
型T
は qHash() がサポートしていなければならない。
注: QtPrivate::QNothrowHashable_v<T>
がtrue
の場合、この関数は noexcept となる。
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<()
を実装している必要があります。
© 2025 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.