Auf dieser Seite

QVarLengthArray Class

template <typename T, qsizetype Prealloc> class QVarLengthArray

Die Klasse „QVarLengthArray“ stellt ein Low-Level-Array mit variabler Länge bereit. Mehr...

Header: #include <QVarLengthArray>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core
Erbt von: QVLABase und QVLAStorage

Hinweis: Alle Funktionen dieser Klasse sind reentrant.

Öffentliche Typen

Öffentliche Funktionen

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

Statische öffentliche Mitglieder

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

Ausführliche Beschreibung

Die Sprache C++ unterstützt keine Arrays mit variabler Länge auf dem Stack. Der folgende Code lässt sich beispielsweise nicht kompilieren:

int myfunc_wrong(int n)
{
    int table[n + 1];  // WRONG
    //...
    return table[n];
}

Die Alternative besteht darin, das Array auf dem Heap zuzuweisen (mit ` new`):

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

Wird `myfunc()` jedoch sehr häufig aus der inneren Schleife der Anwendung heraus aufgerufen, kann die Heap-Zuweisung zu erheblichen Verlangsamungen führen.

QVarLengthArray ist ein Versuch, diese Lücke in der Programmiersprache C++ zu umgehen. Es reserviert eine bestimmte Anzahl von Elementen auf dem Stack, und wenn Sie die Größe des Arrays erhöhen, wird stattdessen automatisch der Heap verwendet. Die Zuweisung auf dem Stack hat den Vorteil, dass sie wesentlich schneller ist als die Zuweisung auf dem Heap.

Beispiel:

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

Im obigen Beispiel reserviert `QVarLengthArray` vorab 1024 Elemente auf dem Stack und nutzt diese, sofern ` n + 1 ` nicht größer als 1024 ist. Der Template-Parameter ` T ` gibt den Elementtyp an, und ` Prealloc ` legt fest, wie viele Elemente vorab auf dem Stack reserviert werden sollen; wird dieser Parameter weggelassen, ist der Standardwert für ` Prealloc ` 256.

Der Werttyp von `QVarLengthArray` muss ein zuweisbarer Datentyp sein. Dies deckt die meisten gängigen Datentypen ab, doch der Compiler lässt beispielsweise nicht zu, dass ein ` QWidget ` als Wert gespeichert wird; stattdessen muss ein ` QWidget *` gespeichert werden.

QVarLengthArray bietet, ähnlich wie „ QList “, eine Datenstruktur für Arrays mit variabler Größe. Die wichtigsten Unterschiede zwischen den beiden Klassen sind:

  • Die API von `QVarLengthArray` ist wesentlich niedriger angesiedelt und es fehlen ihr einige Funktionen von ` QList`.
  • QVarLengthArray initialisiert den Speicher nicht, wenn der Wert ein Basistyp ist. (QList tut dies immer.)
  • QList nutzt implizites Sharing zur Speicheroptimierung. QVarLengthArray bietet diese Funktion nicht; es liefert jedoch aufgrund des geringeren Overheads in der Regel eine etwas bessere Leistung, insbesondere in engen Schleifen.

Zusammenfassend lässt sich sagen, dass QVarLengthArray eine Low-Level-Optimierungsklasse ist, die nur in ganz bestimmten Fällen sinnvoll ist. Sie wird an einigen Stellen innerhalb von Qt verwendet und wurde der öffentlichen API von Qt zur Erleichterung für fortgeschrittene Benutzer hinzugefügt.

Siehe auch QList.

Dokumentation zu Mitgliedstypen

[alias] QVarLengthArray::const_iterator

Typedef für const T *. Wird aus Gründen der STL-Kompatibilität bereitgestellt.

[alias] QVarLengthArray::const_pointer

Typedef für const T *. Wird aus Gründen der STL-Kompatibilität bereitgestellt.

[alias] QVarLengthArray::const_reference

Typedef für const T &. Wird aus Gründen der STL-Kompatibilität bereitgestellt.

[alias] QVarLengthArray::const_reverse_iterator

Typedef für „ std::reverse_iterator<const T*> “. Wird aus Gründen der STL-Kompatibilität bereitgestellt.

[alias] QVarLengthArray::difference_type

Typedef für ptrdiff_t. Wird aus Gründen der STL-Kompatibilität bereitgestellt.

[alias] QVarLengthArray::iterator

Typedef für T*. Wird aus Gründen der STL-Kompatibilität bereitgestellt.

[alias] QVarLengthArray::pointer

Typedef für T*. Wird aus Gründen der STL-Kompatibilität bereitgestellt.

[alias] QVarLengthArray::reference

Typedef für T &. Wird aus Gründen der STL-Kompatibilität bereitgestellt.

[alias] QVarLengthArray::reverse_iterator

Typedef für ` std::reverse_iterator<T*>`. Wird aus Gründen der STL-Kompatibilität bereitgestellt.

[alias] QVarLengthArray::size_type

Typedef für int. Wird aus Gründen der STL-Kompatibilität bereitgestellt.

[alias] QVarLengthArray::value_type

Typedef für T. Wird aus Gründen der STL-Kompatibilität bereitgestellt.

Dokumentation zu den Mitgliedsfunktionen

[noexcept] QVarLengthArray::QVarLengthArray()

Erstellt ein Array mit einer anfänglichen Größe von Null.

[explicit] QVarLengthArray::QVarLengthArray(qsizetype size)

Erstellt ein Array mit einer anfänglichen Größe von size Elementen.

Wenn es sich bei dem Werttyp um einen primitiven Typ (z. B. char, int, float) oder einen Zeigertyp (z. B. QWidget *) handelt, werden die Elemente nicht initialisiert. Bei anderen Typen werden die Elemente mit einem durch die Standardkonstruktion erzeugten Wert initialisiert.

QVarLengthArray::QVarLengthArray(std::initializer_list<T> args)

Erstellt ein Array aus der durch ` args` angegebenen `std::initializer_list`.

template <typename InputIterator, QVarLengthArray<T, Prealloc>::if_input_iterator<InputIterator> = true> QVarLengthArray::QVarLengthArray(InputIterator first, InputIterator last)

Erstellt ein Array mit dem Inhalt des Iteratorbereichs [first, last).

Der Werttyp von ` InputIterator ` muss in ` T` konvertierbar sein.

Einschränkungen

Nimmt nur dann an der Überladungsauflösung teil, wenn InputIterator die Anforderungen eines ` LegacyInputIterator` erfüllt.

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

Erstellt ein Array mit einer anfänglichen Größe von size Elementen, das mit Kopien von v gefüllt ist.

Hinweis: Dieser Konstruktor ist nur verfügbar, wenn „ T “ kopierbar ist.

Diese Funktion wurde in Qt 6.4 eingeführt.

Siehe auch size() und squeeze().

QVarLengthArray::QVarLengthArray(const QVarLengthArray<T, Prealloc> &other)

Erstellt eine Kopie von „ other “.

[noexcept(...), since 6.0] QVarLengthArray::QVarLengthArray(QVarLengthArray<T, Prealloc> &&other)

Erstellt dieses Array mit variabler Länge per Move-Konstruktion aus „ other “. Nach dem Move ist „ other “ leer.

Diese Funktion wurde in Qt 6.0 eingeführt.

Hinweis: Diese Funktion ist „noexcept“, wenn std::is_nothrow_move_constructible_v<T> gleich true ist.

QVarLengthArray::~QVarLengthArray()

Löscht das Array.

void QVarLengthArray::append(const T &t)

Fügt das Element „ t “ zum Array hinzu und erweitert das Array gegebenenfalls.

Siehe auch removeLast().

void QVarLengthArray::append(const T *buf, qsizetype size)

size Fügt die Anzahl der Elemente, auf die buf verweist, diesem Array hinzu.

void QVarLengthArray::append(T &&t)

Hinweis: Im Gegensatz zur L-Value-Überladung von `append()` führt die Übergabe einer Referenz auf ein Objekt, das bereits ein Element von ` *this ` ist, zu undefiniertem Verhalten:

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

Diese Funktion überlädt ` QVarLengthArray::append`.

[since 6.6] QVarLengthArray<T, Prealloc> &QVarLengthArray::assign(std::initializer_list<T> list)

Ersetzt den Inhalt dieses Containers durch eine Kopie der Elemente von list.

Die Größe dieses Containers entspricht der Anzahl der Elemente in ` list`.

Diese Funktion reserviert nur dann Speicher, wenn die Anzahl der Elemente in ` list ` die Kapazität des Containers überschreitet.

Diese Funktion wurde in Qt 6.6 eingeführt.

[since 6.6] template <typename InputIterator, QVarLengthArray<T, Prealloc>::if_input_iterator<InputIterator> = true> QVarLengthArray<T, Prealloc> &QVarLengthArray::assign(InputIterator first, InputIterator last)

Ersetzt den Inhalt dieses Containers durch eine Kopie der Elemente im Iteratorbereich [first, last).

Die Größe dieses Containers entspricht der Anzahl der Elemente im Bereich [first, last). Diese Funktion reserviert nur dann Speicher, wenn die Anzahl der Elemente im Bereich die Kapazität des Containers überschreitet.

Das Verhalten ist undefiniert, wenn eines der Argumente ein Iterator auf *this ist.

Einschränkungen

Nimmt nur dann an der Überladungsauflösung teil, wenn InputIterator die Anforderungen eines LegacyInputIterator erfüllt.

Diese Funktion wurde in Qt 6.6 eingeführt.

[since 6.6] QVarLengthArray<T, Prealloc> &QVarLengthArray::assign(qsizetype n, const T &t)

Ersetzt den Inhalt dieses Containers durch n Kopien von t.

Die Größe dieses Containers entspricht dann n. Diese Funktion reserviert nur dann Speicher, wenn n die Kapazität des Containers überschreitet.

Diese Funktion wurde in Qt 6.6 eingeführt.

const T &QVarLengthArray::at(qsizetype i) const

Gibt eine Referenz auf das Element an der Indexposition i zurück.

i muss eine gültige Indexposition im Array sein (d. h., 0 <= i < size()).

Siehe auch value() und operator[]().

T &QVarLengthArray::back()

Entspricht „ last()“. Wird aus Gründen der STL-Kompatibilität bereitgestellt.

const T &QVarLengthArray::back() const

Dies ist eine überladene Funktion.

QVarLengthArray<T, Prealloc>::iterator QVarLengthArray::begin()

Gibt einen Iterator im STL-Stil zurück, der auf das erste Element des Arrays zeigt.

Siehe auch constBegin() und end().

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

Dies ist eine überladene Funktion.

qsizetype QVarLengthArray::capacity() const

Gibt die maximale Anzahl von Elementen zurück, die im Array gespeichert werden können, ohne dass eine Neuzuweisung erzwungen wird.

Der einzige Zweck dieser Funktion besteht darin, eine Möglichkeit zur Feinabstimmung der Speichernutzung von „ QVarLengthArray “ bereitzustellen. Im Allgemeinen werden Sie diese Funktion so gut wie nie aufrufen müssen. Wenn Sie wissen möchten, wie viele Elemente sich im Array befinden, rufen Sie „ size()“ auf.

Siehe auch reserve() und squeeze().

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

Gibt einen konstanten Iterator im STL-Stil zurück, der auf das erste Element des Arrays zeigt.

Siehe auch ` begin()` und ` cend()`.

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

Gibt einen konstanten Iterator im STL-Stil zurück, der auf das imaginäre Element nach dem letzten Element im Array zeigt.

Siehe auch „ cbegin()“ und „ end()“.

void QVarLengthArray::clear()

Entfernt alle Elemente aus dem Array.

Entspricht resize(0).

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

Gibt einen konstanten Iterator im STL-Stil zurück, der auf das erste Element des Arrays zeigt.

Siehe auch „ begin()“ und „ constEnd()“.

const T *QVarLengthArray::constData() const

Gibt einen const-Zeiger auf die im Array gespeicherten Daten zurück. Der Zeiger kann verwendet werden, um auf die Elemente im Array zuzugreifen. Der Zeiger bleibt gültig, solange das Array nicht neu zugewiesen wird.

Diese Funktion ist vor allem nützlich, um ein Array an eine Funktion zu übergeben, die ein einfaches C++-Array akzeptiert.

Siehe auch ` data()` und ` operator[]()`.

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

Gibt einen konstanten Iterator im STL-Stil zurück, der auf das imaginäre Element nach dem letzten Element im Array zeigt.

Siehe auch „ constBegin()“ und „ end()“.

template <typename AT = T> bool QVarLengthArray::contains(const AT &value) const

Gibt „ true “ zurück, wenn das Array ein Vorkommen von „ value “ enthält; andernfalls wird „ false “ zurückgegeben.

Diese Funktion setzt voraus, dass der Werttyp über eine Implementierung von ` operator==()` verfügt.

Siehe auch „ indexOf()“ und „ lastIndexOf()“.

qsizetype QVarLengthArray::count() const

Wie unter size() beschrieben.

Siehe auch isEmpty() und resize().

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

Gibt einen konstanten Reverse-Iterator im STL-Stil zurück, der in umgekehrter Reihenfolge auf das erste Element des Arrays mit variabler Länge verweist.

Siehe auch begin(), rbegin() und rend().

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

Gibt einen konstanten Reverse-Iterator im STL-Stil zurück, der in umgekehrter Reihenfolge auf die Position direkt nach dem letzten Element des Arrays variabler Länge verweist.

Siehe auch end(), rend() und rbegin().

T *QVarLengthArray::data()

Gibt einen Zeiger auf die im Array gespeicherten Daten zurück. Mit diesem Zeiger kann auf die Elemente im Array zugegriffen und diese geändert werden.

Beispiel:

QVarLengthArray<int> array(10);
int *data = array.data();
for (int i = 0; i < 10; ++i)
    data[i] = 2 * i;

Der Zeiger bleibt gültig, solange das Array nicht neu zugewiesen wird.

Diese Funktion ist vor allem nützlich, um ein Array an eine Funktion zu übergeben, die ein einfaches C++-Array akzeptiert.

Siehe auch „ constData()“ und „ operator[]()“.

const T *QVarLengthArray::data() const

Dies ist eine überladene Funktion.

[since 6.3] template <typename... Args> QVarLengthArray<T, Prealloc>::iterator QVarLengthArray::emplace(QVarLengthArray<T, Prealloc>::const_iterator pos, Args &&... args)

Fügt ein Element vor dem Element ein, auf das der Iterator pos zeigt, und übergibt dabei args an dessen Konstruktor.

Gibt einen Iterator zurück, der auf das eingefügte Element zeigt.

Diese Funktion wurde in Qt 6.3 eingeführt.

[since 6.3] template <typename... Args> T &QVarLengthArray::emplace_back(Args &&... args)

Fügt ein Element am Ende dieses „ QVarLengthArray “ ein und übergibt dabei „ args “ an dessen Konstruktor.

Gibt eine Referenz auf das eingefügte Element zurück.

Diese Funktion wurde in Qt 6.3 eingeführt.

bool QVarLengthArray::empty() const

Gibt „ true “ zurück, wenn das Array die Größe 0 hat; andernfalls wird „ false “ zurückgegeben.

Entspricht ` isEmpty()`. Wird aus Gründen der STL-Kompatibilität bereitgestellt.

QVarLengthArray<T, Prealloc>::iterator QVarLengthArray::end()

Gibt einen Iterator im STL-Stil zurück, der auf das imaginäre Element nach dem letzten Element im Array zeigt.

Siehe auch begin() und constEnd().

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

Dies ist eine überladene Funktion.

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

Entfernt das Element, auf das der Iterator pos verweist, aus dem Vektor und gibt einen Iterator auf das nächste Element im Vektor zurück (dieser kann end() sein).

Siehe auch insert() und remove().

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

Entfernt alle Elemente von begin bis einschließlich (jedoch nicht einschließlich) end. Gibt einen Iterator auf dasselbe Element zurück, auf das end vor dem Aufruf verwiesen hat.

Dies ist eine überladene Funktion.

T &QVarLengthArray::first()

Gibt eine Referenz auf das erste Element des Arrays zurück. Das Array darf nicht leer sein. Falls das Array leer sein kann, überprüfen Sie vor dem Aufruf dieser Funktion die Funktion isEmpty().

Siehe auch last() und isEmpty().

const T &QVarLengthArray::first() const

Dies ist eine überladene Funktion.

T &QVarLengthArray::front()

Entspricht „ first()“. Wird aus Gründen der STL-Kompatibilität bereitgestellt.

const T &QVarLengthArray::front() const

Dies ist eine überladene Funktion.

template <typename AT = T> qsizetype QVarLengthArray::indexOf(const AT &value, qsizetype from = 0) const

Gibt die Indexposition des ersten Vorkommens von „ value “ im Array zurück, wobei die Suche ausgehend von der Indexposition „ from “ vorwärts erfolgt. Gibt -1 zurück, wenn kein Element gefunden wurde.

Diese Funktion setzt voraus, dass der Werttyp über eine Implementierung von ` operator==()` verfügt.

Siehe auch ` lastIndexOf()` und ` contains()`.

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

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

Fügt value an der Indexposition i in das Array ein. Ist i gleich 0, wird der Wert am Anfang des Vektors eingefügt. Ist i gleich size(), wird der Wert am Ende des Vektors angehängt.

Bei großen Arrays kann dieser Vorgang langsam sein (lineare Laufzeit), da alle Elemente an den Indizes i und darüber im Speicher um eine Position weiter verschoben werden müssen. Wenn Sie eine Containerklasse suchen, die eine schnelle Funktion insert() bietet, verwenden Sie stattdessen std::list.

Siehe auch ` remove()`.

QVarLengthArray<T, Prealloc>::iterator QVarLengthArray::insert(QVarLengthArray<T, Prealloc>::const_iterator before, qsizetype count, const T &value)

Fügt count Kopien von value vor das Element ein, auf das der Iterator before zeigt. Gibt einen Iterator zurück, der auf das erste der eingefügten Elemente zeigt.

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)

Fügt „ value “ vor dem Element ein, auf das der Iterator „ before “ zeigt. Gibt einen Iterator zurück, der auf das eingefügte Element zeigt.

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

Fügt count Kopien von value an der Indexposition i in den Vektor ein.

Dies ist eine überladene Funktion.

bool QVarLengthArray::isEmpty() const

Gibt „ true “ zurück, wenn das Array die Größe 0 hat; andernfalls wird „ false “ zurückgegeben.

Siehe auch „ size()“ und „ resize()“.

T &QVarLengthArray::last()

Gibt eine Referenz auf das letzte Element des Arrays zurück. Das Array darf nicht leer sein. Falls das Array leer sein kann, überprüfen Sie vor dem Aufruf dieser Funktion isEmpty().

Siehe auch first() und isEmpty().

const T &QVarLengthArray::last() const

Dies ist eine überladene Funktion.

template <typename AT = T> qsizetype QVarLengthArray::lastIndexOf(const AT &value, qsizetype from = -1) const

Gibt die Indexposition des letzten Vorkommens des Werts „ value “ im Array zurück, wobei die Suche rückwärts ab der Indexposition „ from “ erfolgt. Ist „ from “ gleich -1 (Standardwert), beginnt die Suche beim letzten Element. Gibt -1 zurück, wenn kein Element gefunden wurde.

Diese Funktion setzt voraus, dass der Werttyp über eine Implementierung von ` operator==()` verfügt.

Siehe auch „ indexOf()“ und „ contains()“.

qsizetype QVarLengthArray::length() const

Wie unter size() beschrieben.

Siehe auch isEmpty() und resize().

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

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

Sie gibt die maximale Anzahl an Elementen zurück, die das Array theoretisch enthalten kann. In der Praxis kann diese Zahl jedoch deutlich geringer ausfallen, da sie durch den dem System zur Verfügung stehenden Speicher begrenzt ist.

Diese Funktionen wurden in Qt 6.8 eingeführt.

void QVarLengthArray::pop_back()

Entspricht „ removeLast()“. Wird aus Gründen der STL-Kompatibilität bereitgestellt.

void QVarLengthArray::push_back(const T &t)

Fügt das Element „ t “ an das Array an und erweitert das Array gegebenenfalls. Dies dient der STL-Kompatibilität.

void QVarLengthArray::push_back(T &&t)

Hinweis: Im Gegensatz zur L-Wert-Überladung von `push_back()` führt die Übergabe einer Referenz auf ein Objekt, das bereits ein Element von ` *this ` ist, zu undefiniertem Verhalten:

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

Diese Funktion überlädt ` QVarLengthArray::push_back`.

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

Gibt einen Reverse-Iterator im STL-Stil zurück, der in umgekehrter Reihenfolge auf das erste Element des Arrays mit variabler Länge verweist.

Siehe auch begin(), crbegin() und rend().

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

Dies ist eine überladene Funktion.

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

Entfernt die Elemente count aus dem Array, beginnend bei der Indexposition i.

i muss eine gültige Indexposition im Array sein (d. h., 0 <= i < size()). count muss <= size() - i sein. i == size() ist zulässig, wenn count == 0 ist.

Siehe auch insert() und replace().

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

Entfernt alle Elemente aus dem Array, die mit „ t “ übereinstimmen. Gibt die Anzahl der entfernten Elemente zurück, sofern vorhanden.

Diese Funktion wurde in Qt 6.1 eingeführt.

Siehe auch removeOne().

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

Entfernt das Element an der Position i aus dem Array.

i i muss eine gültige Indexposition im Array sein (d. h., 0 <= < ()). size

Diese Funktion wird aus Kompatibilitätsgründen mit ` QList` bereitgestellt.

Diese Funktion wurde in Qt 6.12 eingeführt.

Siehe auch insert() und replace().

[since 6.1] template <typename Predicate> qsizetype QVarLengthArray::removeIf(Predicate pred)

Entfernt alle Elemente aus dem Array, für die das Prädikat „ pred “ den Wert „true“ zurückgibt. Gibt die Anzahl der entfernten Elemente zurück, sofern vorhanden.

Diese Funktion wurde in Qt 6.1 eingeführt.

Siehe auch ` removeAll()`.

void QVarLengthArray::removeLast()

Verringert die Größe des Arrays um eins. Die zugewiesene Größe wird dabei nicht verändert.

Siehe auch ` append()`.

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

Entfernt das erste Element aus dem Array, dessen Wert mit „ t “ übereinstimmt. Gibt zurück, ob tatsächlich ein Element entfernt wurde.

Diese Funktion wurde in Qt 6.1 eingeführt.

Siehe auch removeAll().

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

Gibt einen Reverse-Iterator im STL-Stil zurück, der in umgekehrter Reihenfolge auf die Position direkt nach dem letzten Element des Arrays mit variabler Länge zeigt.

Siehe auch end(), crend() und rbegin().

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

Dies ist eine überladene Funktion.

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

Ersetzt das Element an der Indexposition i durch value.

i muss eine gültige Indexposition im Array sein (d. h. 0 <= i < size()).

Siehe auch operator[]() und remove().

void QVarLengthArray::reserve(qsizetype size)

Versucht, Speicher für mindestens size Elemente zuzuweisen. Wenn Sie im Voraus wissen, wie groß das Array werden kann, können Sie diese Funktion aufrufen; wenn Sie resize() häufig aufrufen, erzielen Sie damit wahrscheinlich eine bessere Leistung. Sollte size zu niedrig angesetzt sein, ist das Schlimmste, was passieren kann, dass die Funktion QVarLengthArray etwas langsamer läuft.

Der einzige Zweck dieser Funktion besteht darin, eine Möglichkeit zur Feinabstimmung der Speichernutzung von „ QVarLengthArray “ bereitzustellen. Im Allgemeinen werden Sie diese Funktion so gut wie nie aufrufen müssen. Wenn Sie die Größe des Arrays ändern möchten, rufen Sie „ resize()“ auf.

Siehe auch capacity() und squeeze().

void QVarLengthArray::resize(qsizetype size)

Legt die Größe des Arrays auf ` size` fest. Ist ` size ` größer als die aktuelle Größe, werden Elemente am Ende hinzugefügt. Ist ` size ` kleiner als die aktuelle Größe, werden Elemente am Ende entfernt.

Ist der Werttyp ein primitiver Typ (z. B. char, int, float) oder ein Zeigertyp (z. B. QWidget *), werden neue Elemente nicht initialisiert. Bei anderen Typen werden die Elemente mit einem durch die Standardkonstruktion erzeugten Wert initialisiert.

Siehe auch ` size()` und ` squeeze()`.

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

Legt die Größe des Arrays auf „ size “ fest. Ist „ size “ größer als die aktuelle Größe, werden Kopien von „ v “ am Ende angehängt. Ist „ size “ kleiner als die aktuelle Größe, werden Elemente am Ende entfernt.

Hinweis: Diese Funktion ist nur verfügbar, wenn T kopierbar ist.

Diese Funktion wurde in Qt 6.4 eingeführt.

Siehe auch „ size()“ und „ squeeze()“.

void QVarLengthArray::shrink_to_fit()

Entspricht „ squeeze()“. Wird aus Gründen der STL-Kompatibilität bereitgestellt.

qsizetype QVarLengthArray::size() const

Gibt die Anzahl der Elemente im Array zurück.

Siehe auch isEmpty() und resize().

void QVarLengthArray::squeeze()

Gibt den Speicher frei, der nicht zur Speicherung der Elemente benötigt wird. Wenn der Container seinen Speicherplatz auf dem Stack unterbringen kann, gibt er den auf dem Heap zugewiesenen Speicher frei und kopiert die Elemente zurück auf den Stack.

Der einzige Zweck dieser Funktion besteht darin, eine Möglichkeit zur Feinabstimmung der Speichernutzung von QVarLengthArray zu bieten. Im Allgemeinen werden Sie diese Funktion so gut wie nie aufrufen müssen.

Siehe auch reserve(), capacity() und resize().

T QVarLengthArray::value(qsizetype i) const

Gibt den Wert an der Indexposition i zurück.

Liegt der Index i außerhalb des zulässigen Bereichs, gibt die Funktion einen standardkonstruierten Wert zurück. Wenn Sie sicher sind, dass i innerhalb des zulässigen Bereichs liegt, können Sie stattdessen at() verwenden, was etwas schneller ist.

Siehe auch ` at()` und ` operator[]()`.

T QVarLengthArray::value(qsizetype i, const T &defaultValue) const

Liegt der Index „ i “ außerhalb des zulässigen Bereichs, gibt die Funktion „ defaultValue “ zurück.

Dies ist eine überladene Funktion.

QVarLengthArray<T, Prealloc> &QVarLengthArray::operator+=(const T &value)

Fügt „ value “ zum Array hinzu und gibt eine Referenz auf diesen Vektor zurück.

Siehe auch „ append()“ und „ operator<<()“.

QVarLengthArray<T, Prealloc> &QVarLengthArray::operator+=(T &&value)

Dies ist eine überladene Funktion.

Siehe auch append() und operator<<().

QVarLengthArray<T, Prealloc> &QVarLengthArray::operator<<(const T &value)

Fügt „ value “ zum Array hinzu und gibt eine Referenz auf diesen Vektor zurück.

Siehe auch „ append()“ und „ operator+=()“.

QVarLengthArray<T, Prealloc> &QVarLengthArray::operator<<(T &&value)

Dies ist eine überladene Funktion.

Siehe auch append() und operator+=().

[noexcept(...), since 6.0] QVarLengthArray<T, Prealloc> &QVarLengthArray::operator=(QVarLengthArray<T, Prealloc> &&other)

Die Funktion „move-assigns“ weist diesem Array den Wert „ other “ zu und gibt eine Referenz auf dieses Array zurück. Nach dem Verschieben ist „ other “ leer.

Diese Funktion wurde in Qt 6.0 eingeführt.

Hinweis: Diese Funktion ist „noexcept“, wenn std::is_nothrow_move_constructible_v<T> gleich true ist.

QVarLengthArray<T, Prealloc> &QVarLengthArray::operator=(const QVarLengthArray<T, Prealloc> &other)

Weist diesem Array den Wert „ other “ zu und gibt eine Referenz auf dieses Array zurück.

QVarLengthArray<T, Prealloc> &QVarLengthArray::operator=(std::initializer_list<T> list)

Weist diesem Array die Werte von „ list “ zu und gibt eine Referenz auf dieses Array zurück.

T &QVarLengthArray::operator[](qsizetype i)

Gibt eine Referenz auf das Element an der Indexposition i zurück.

i muss eine gültige Indexposition im Array sein (d. h. 0 <= i < size()).

Siehe auch data() und at().

const T &QVarLengthArray::operator[](qsizetype i) const

Dies ist eine überladene Funktion.

Verwandte Nicht-Mitglieder

[since 6.1] template < typename T, qsizetype Prealloc, typename AT > qsizetype erase(QVarLengthArray<T, Prealloc> &array, const AT &t)

Entfernt alle Elemente aus dem Array „ array “, die mit „ t “ übereinstimmen. Gibt die Anzahl der entfernten Elemente zurück, sofern vorhanden.

Hinweis: „ t “ darf keine Referenz auf ein Element innerhalb von „ array “ sein. Wenn Sie nicht sicher sind, ob dies nicht der Fall ist, erstellen Sie eine Kopie von „ t “ und rufen Sie diese Funktion mit der Kopie auf.

Diese Funktion wurde in Qt 6.1 eingeführt.

Siehe auch erase_if().

[since 6.1] template < typename T, qsizetype Prealloc, typename Predicate > qsizetype erase_if(QVarLengthArray<T, Prealloc> &array, Predicate pred)

Entfernt alle Elemente, für die das Prädikat „ pred “ den Wert „true“ zurückgibt, aus der Liste „ array “. Gibt die Anzahl der entfernten Elemente zurück, sofern vorhanden. Die Größe der Vorabzuweisung „ Prealloc “ hat keinen Einfluss auf den Vorgang.

Diese Funktion wurde in Qt 6.1 eingeführt.

Siehe auch erase().

[noexcept(...)] template <typename T, qsizetype Prealloc> size_t qHash(const QVarLengthArray<T, Prealloc> &key, size_t seed = 0)

Gibt den Hash-Wert für „ key “ zurück, wobei „ seed “ als Startwert für die Berechnung verwendet wird.

Der Typ „ T “ muss von qHash() unterstützt werden.

Gibt den Hash-Wert für ` key` zurück, wobei ` seed ` als Startwert für die Berechnung verwendet wird. Die Größe der Vorabzuweisung ` Prealloc ` hat keinen Einfluss auf den Hash-Wert.

Hinweis: Diese Funktion ist „noexcept“, wenn „ QtPrivate::QNothrowHashable_v<T> “ gleich „ true “ ist.

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

Gibt „ true “ zurück, wenn die beiden durch „ left “ und „ right “ angegebenen Arrays nicht gleich sind. Die vorab zugewiesenen Größen „ Prealloc1 “ und „ Prealloc2 “ können voneinander abweichen.

Zwei Arrays gelten als gleich, wenn sie dieselben Werte in derselben Reihenfolge enthalten.

Diese Funktion setzt voraus, dass der Werttyp über eine Implementierung von ` operator==()` verfügt.

Siehe auch ` operator==()`.

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

Gibt „ true “ zurück, wenn das Array mit variabler Länge lhs lexikografisch kleiner ist als rhs; andernfalls wird „ false “ zurückgegeben. Die vorab zugewiesenen Größen Prealloc1 und Prealloc2 können voneinander abweichen.

Diese Funktion setzt voraus, dass der Werttyp über eine Implementierung von ` operator<()` verfügt.

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

Gibt „ true “ zurück, wenn das Array variabler Länge „ lhs “ lexikografisch kleiner oder gleich „ rhs“ ist; andernfalls wird „ false “ zurückgegeben. Die vorab zugewiesenen Größen „ Prealloc1 “ und „ Prealloc2 “ können voneinander abweichen.

Diese Funktion setzt voraus, dass der Werttyp über eine Implementierung von ` operator<()` verfügt.

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

Gibt „ true “ zurück, wenn die beiden durch „ left “ und „ right “ angegebenen Arrays gleich sind. Die vorab zugewiesenen Größen „ Prealloc1 “ und „ Prealloc2 “ können voneinander abweichen.

Zwei Arrays gelten als gleich, wenn sie dieselben Werte in derselben Reihenfolge enthalten.

Diese Funktion setzt voraus, dass der Werttyp über eine Implementierung von ` operator==()` verfügt.

Siehe auch ` operator!=()`.

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

Gibt „ true “ zurück, wenn das Array mit variabler Länge „ lhs “ lexikografisch größer ist als „ rhs “; andernfalls wird „ false “ zurückgegeben. Die vorab zugewiesenen Größen „ Prealloc1 “ und „ Prealloc2 “ können voneinander abweichen.

Diese Funktion setzt voraus, dass der Werttyp über eine Implementierung von ` operator<()` verfügt.

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

Gibt „ true “ zurück, wenn das Array mit variabler Länge „ lhs “ lexikografisch größer oder gleich „ rhs“ ist; andernfalls wird „ false “ zurückgegeben. Die vorab zugewiesenen Größen „ Prealloc1 “ und „ Prealloc2 “ können voneinander abweichen.

Diese Funktion setzt voraus, dass der Werttyp über eine Implementierung von ` operator<()` verfügt.

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