このページでは

QVarLengthArray Class

template <typename T, qsizetype Prealloc> class QVarLengthArray

QVarLengthArray クラスは、低レベルの可変長配列を提供します。詳細...

ヘッダー: #include <QVarLengthArray>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core
継承元: QVLABase および QVLAStorage

注:このクラスのすべての関数は再入可能である。

パブリック型

パブリック関数

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.12) void removeAt(qsizetype i)
(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_wrong(int n)
{
    int table[n + 1];  // WRONG
    //...
    return table[n];
}

その代替手段として、ヒープ上に配列を割り当てる方法があります(new を使用):

int myfunc_correct(int n)
{
    int *table = new int[n + 1];
    //...
    int ret = table[n];
    delete[] table;
    return ret;
}

しかし、アプリケーションの内部ループから myfunc() が非常に頻繁に呼び出される場合、ヒープ上の割り当てはパフォーマンス低下の主な原因となり得ます。

QVarLengthArrayは、C++言語のこの制限を回避するための試みです。これは、スタック上に一定数の要素を割り当て、配列のサイズを大きく変更すると、自動的にヒープを使用するように切り替えます。スタック上の割り当ては、ヒープ上の割り当てよりもはるかに高速であるという利点があります。

例:

int myfunc_q(int n)
{
    QVarLengthArray<int, 1024> array(n + 1);
    //...
    return array[n];
}

上記の例では、n + 1 が1024より大きい場合を除き、QVarLengthArrayはスタック上に1024個の要素を事前割り当てし、それらを使用します。テンプレートパラメータT は要素型を指定し、Prealloc はスタック上に事前割り当てる要素数を指定します。省略された場合、Prealloc はデフォルトで256になります。

QVarLengthArrayの値型は、代入可能なデータ型でなければなりません。これにより、一般的に使用されるほとんどのデータ型がカバーされますが、例えば、QWidget を値として格納することはコンパイラによって許可されません。その代わりに、QWidget *を格納してください。

QVarLengthArrayは、QList と同様に、サイズ変更可能な配列データ構造を提供します。これら2つのクラスの主な違いは以下の通りです。

  • QVarLengthArrayのAPIははるかに低レベルであり、QList の機能の一部が欠けています。
  • QVarLengthArrayは、値が基本型の場合、メモリを初期化しません(QList は常に初期化します)。
  • QList xml-ph-0000@deepl.internalは、メモリ最適化として暗黙的な共有を使用します。QVarLengthArrayにはこの機能はありませんが、オーバーヘッドが低減されるため、特に高頻度で繰り返されるループでは、通常、わずかに優れたパフォーマンスを発揮します。

要約すると、QVarLengthArray は低レベルの最適化クラスであり、ごく特定のケースでのみ有用です。Qt 内部のいくつかの箇所で使用されており、上級ユーザーの利便性を考慮して Qt のパブリック API に追加されました。

QListも参照してください 。

メンバ型のドキュメント

[alias] QVarLengthArray::const_iterator

const T * の typedef。STL との互換性を確保するために用意されています。

[alias] QVarLengthArray::const_pointer

const T * の typedef。STL との互換性を確保するために用意されています。

[alias] QVarLengthArray::const_reference

const T & の typedef。STL との互換性を確保するために用意されています。

[alias] QVarLengthArray::const_reverse_iterator

std::reverse_iterator<const T*> の typedef。STL との互換性を確保するために用意されています。

[alias] QVarLengthArray::difference_type

ptrdiff_t の typedef。STL との互換性を確保するために用意されています。

[alias] QVarLengthArray::iterator

T * の typedef。STL との互換性を確保するために用意されています。

[alias] QVarLengthArray::pointer

T * の typedef。STL との互換性を確保するために用意されています。

[alias] QVarLengthArray::reference

T に対する typedef。STL との互換性を確保するために用意されています。

[alias] QVarLengthArray::reverse_iterator

std::reverse_iterator<T*> の typedef。STL との互換性を確保するために用意されています。

[alias] QVarLengthArray::size_type

int の typedef。STL との互換性を確保するために用意されています。

[alias] QVarLengthArray::value_type

T の typedef。STL との互換性を確保するために用意されています。

メンバ関数のドキュメント

[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 の値型は、T に変換可能でなければなりません。

制約

InputIterator がLegacyInputIterator の要件を満たしている場合にのみ、オーバーロード解決の対象となります。

[explicit, since 6.4] QVarLengthArray::QVarLengthArray(qsizetype size, const T &v)

初期サイズがsize 要素の配列を構築し、その要素にはv のコピーが格納されます。

注:この コンストラクタは、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() の lvalue オーバーロードとは異なり 、*this の要素であるオブジェクトへの参照を渡すと、未定義の挙動が生じます:

vla.append(std::move(vla[0])); // BUG: passing an object that is already in the container

この関数はQVarLengthArray::append をオーバーロードしています。

[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) 内の要素数と同じになります。この関数は、範囲内の要素数がコンテナの容量を超える場合にのみ、メモリを割り当てます。

いずれかの引数が *this へのイテレータである場合、挙動は未定義となります。

制約

InputIterator がLegacyInputIterator の要件を満たしている場合にのみ、オーバーロードの解決に関与します。

この関数は 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 i は、配列内の有効なインデックス位置でなければなりません(つまり、0 <= < ())。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()を呼び出してください。

reserve() およびsqueeze()も参照してください 。

QVarLengthArray<T, Prealloc>::const_iterator QVarLengthArray::cbegin() const

配列の最初の要素を指す、STL スタイルのconstイテレータを返します。

begin() およびcend()も参照してください 。

QVarLengthArray<T, Prealloc>::const_iterator QVarLengthArray::cend() const

配列の最後の要素の直後に位置する仮想の要素を指す、STL スタイルのconstイテレータを返します。

cbegin() およびend()も参照してください 。

void QVarLengthArray::clear()

配列からすべての要素を削除します。

resize(0) と同じです。

QVarLengthArray<T, Prealloc>::const_iterator QVarLengthArray::constBegin() const

配列の最初の要素を指す、STL スタイルのconstイテレータを返します。

begin() およびconstEnd()も参照してください 。

const T *QVarLengthArray::constData() const

配列に格納されているデータへのconstポインタを返します。このポインタを使用して、配列内の要素にアクセスできます。このポインタは、配列が再割り当てされない限り有効です。

この関数は、主に、通常の C++ 配列を受け入れる関数に配列を渡す際に役立ちます。

data() およびoperator[]()も参照してください 。

QVarLengthArray<T, Prealloc>::const_iterator QVarLengthArray::constEnd() const

配列の最後の要素の直後に位置する仮想の要素を指す、STL スタイルのconstイテレータを返します。

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

可変長配列の最後の要素の1つ先を指す、STLスタイルの定数逆イテレータを、逆順で返します。

end()、rend()、およびrbegin()も参照してください 。

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形式のイテレータを返します。

begin() およびconstEnd()も参照してください 。

QVarLengthArray<T, Prealloc>::const_iterator QVarLengthArray::end() const

これはオーバーロードされた関数です。

QVarLengthArray<T, Prealloc>::iterator QVarLengthArray::erase(QVarLengthArray<T, Prealloc>::const_iterator pos)

イテレータ `pos ` が指す要素をベクトルから削除し、ベクトルの次の要素へのイテレータを返します(このイテレータは `end()` となる場合があります)。

insert() およびremove()も参照してください 。

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() を確認してください。

last() および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

配列内の `value ` が最初に現れる位置のインデックスを、インデックス位置 `from` から前方へ検索して返します。一致する項目がない場合は `-1` を返します。

この関数を使用するには、値型が `operator==()` の実装を持っている必要があります。

lastIndexOf() およびcontains()も参照してください 。

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, qsizetype count, const T &value)

イテレータbefore が指す項目の前に、value のcount 個のコピーを挿入します。挿入された項目の先頭を指すイテレータを返します。

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 を挿入します。挿入された項目を指すイテレータを返します。

void QVarLengthArray::insert(qsizetype i, qsizetype count, const T &value)

ベクトルのインデックス位置i に、value のcount 個のコピーを挿入します。

これはオーバーロードされた関数です。

bool QVarLengthArray::isEmpty() const

配列のサイズが 0 の場合は `true ` を返し、それ以外の場合は `false` を返します。

size() およびresize()も参照してください 。

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

配列内で値 `value ` が最後に現れるインデックス位置を、インデックス位置 `from` から後方へ検索して返します。from が -1(デフォルト)の場合、検索は最後の要素から開始されます。一致する要素がない場合は -1 を返します。

この関数を使用するには、値の型が `operator==()` を実装している必要があります。

indexOf() およびcontains()も参照してください 。

qsizetype QVarLengthArray::length() const

size() と同じです。

isEmpty() およびresize()も参照してください 。

[static constexpr noexcept, since 6.8] qsizetype QVarLengthArray::maxSize()

[constexpr noexcept, since 6.8] qsizetype QVarLengthArray::max_size() const

この関数は、配列が理論上保持できる要素の最大数を返します。実際には、システムで利用可能なメモリ量によって制限されるため、この数ははるかに小さくなる場合があります。

これらの関数は、Qt 6.8で導入されました。

void QVarLengthArray::pop_back()

removeLast() と同じです。STL との互換性を確保するために用意されています。

void QVarLengthArray::push_back(const T &t)

t という要素を配列に追加し、必要に応じて配列を拡張します。STL との互換性を確保するために用意されています。

void QVarLengthArray::push_back(T &&t)

注: push_back() の lvalue オーバーロードとは異なり 、すでに `*this ` の要素となっているオブジェクトへの参照を渡すと、未定義の挙動が生じます:

vla.push_back(std::move(vla[0])); // BUG: passing an object that is already in the container

この関数は `QVarLengthArray::push_back` をオーバーロードしています。

QVarLengthArray<T, Prealloc>::reverse_iterator QVarLengthArray::rbegin()

可変長配列の最初の要素を指す、STL 形式の逆方向イテレータを、逆順で返します。

begin()、crbegin()、およびrend()も参照してください 。

QVarLengthArray<T, Prealloc>::const_reverse_iterator QVarLengthArray::rbegin() const

これはオーバーロードされた関数です。

void QVarLengthArray::remove(qsizetype i, qsizetype count = 1)

インデックス位置i から、配列からcount 個の要素を削除します。

i は、配列内の有効なインデックス位置である必要があります(つまり、0 <=i <size())。count は、<=size() -i でなければなりません。count == 0 の場合、i ==size() が許容されます。

insert() およびreplace()も参照してください 。

[since 6.1] template <typename AT = T> qsizetype QVarLengthArray::removeAll(const AT &t)

配列から、t と等しいすべての要素を削除します。削除された要素がある場合は、その数を返します。

この関数は Qt 6.1 で導入されました。

removeOne()も参照してください 。

[since 6.12] void QVarLengthArray::removeAt(qsizetype i)

配列から、位置i にある要素を削除します。

i i は、配列内の有効なインデックス位置でなければなりません(つまり、0 <= < ())。size

この関数は、QList との互換性を確保するために提供されています。

この関数は Qt 6.12 で導入されました。

insert() およびreplace()も参照してください 。

[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()

可変長配列の最後の要素の1つ先を指す、STL形式の逆方向イテレータを、逆順で返します。

end()、crend()、およびrbegin()も参照してください 。

QVarLengthArray<T, Prealloc>::const_reverse_iterator QVarLengthArray::rend() const

これはオーバーロードされた関数です。

void QVarLengthArray::replace(qsizetype i, const T &value)

インデックス位置i にある項目を、value に置き換えます。

i i は配列内の有効なインデックス位置でなければなりません(つまり、0 <= < ())。size

operator[]() およびremove()も参照してください 。

void QVarLengthArray::reserve(qsizetype size)

少なくともsize 個の要素分のメモリを割り当てようとします。配列が最大でどのくらいの大きさになるかが事前にわかっている場合は、この関数を呼び出すことができます。また、resize()を頻繁に呼び出す場合、パフォーマンスが向上する可能性があります。size の値が過小評価されていたとしても、最悪の場合、QVarLengthArray の処理が若干遅くなるだけです。

この関数の唯一の目的は、QVarLengthArray のメモリ使用量を微調整する手段を提供することです。一般的に、この関数を呼び出す必要はほとんどありません。配列のサイズを変更したい場合は、resize()を呼び出してください。

capacity() およびsqueeze()も参照してください 。

void QVarLengthArray::resize(qsizetype size)

配列のサイズをsize に設定します。size が現在のサイズより大きい場合、要素は末尾に追加されます。size が現在のサイズより小さい場合、要素は末尾から削除されます。

値の型がプリミティブ型(例:char、int、float)またはポインタ型(例:QWidget *)の場合、新しい要素は初期化されません。その他の型の場合、要素はデフォルトコンストラクタによる値で初期化されます。

size() およびsqueeze()も参照してください 。

[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)

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 i は、配列内の有効なインデックス位置でなければなりません(つまり、0 <= < ())。size

data() およびat()も参照してください 。

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 ` が真を返すすべての要素を削除します。削除された要素がある場合は、その数を返します。事前割り当てサイズ `Prealloc ` は、この操作に影響しません。

この関数は 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() によってサポートされている必要があります。

seed を計算のシードとして使用し、key のハッシュ値を返します。事前割り当てサイズPrealloc はハッシュに影響しません。

注: 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 を返します。事前割り当てサイズであるPrealloc1 およびPrealloc2 は異なる場合があります。

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 を返します。事前割り当てサイズ `Prealloc1 ` と `Prealloc2 ` は異なる場合があります。

この関数を使用するには、値型がoperator<() を実装している必要があります。

template < typename T, qsizetype Prealloc1, qsizetype Prealloc2 > bool operator<=(const QVarLengthArray<T, Prealloc1> &lhs, const QVarLengthArray<T, Prealloc2> &rhs)

可変長配列lhs がrhsより辞書順で小さいか等しい場合、true を返します。それ以外の場合は、false を返します。事前割り当てサイズPrealloc1 とPrealloc2 は異なる場合があります。

この関数を使用するには、値型がoperator<() を実装している必要があります。

template < typename T, qsizetype Prealloc1, qsizetype Prealloc2 > bool operator==(const QVarLengthArray<T, Prealloc1> &left, const QVarLengthArray<T, Prealloc2> &right)

left およびright で指定された 2 つの配列が等しい場合、true を返します。事前割り当てサイズPrealloc1 およびPrealloc2 は異なる場合があります。

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 を返す。事前割り当てサイズPrealloc1 とPrealloc2 は異なる場合がある。

この関数では、値型がoperator<() の実装を持っている必要があります。

template < typename T, qsizetype Prealloc1, qsizetype Prealloc2 > bool operator>=(const QVarLengthArray<T, Prealloc1> &lhs, const QVarLengthArray<T, Prealloc2> &rhs)

可変長配列 `lhs ` が `rhs` よりも辞書順で大きい、または等しい場合は`true ` を返し、そうでない場合は `false` を返します。事前割り当てサイズ `Prealloc1 ` と `Prealloc2 ` は異なる場合があります。

この関数を使用するには、値型がoperator<() を実装している必要があります。

© 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.