QVarLengthArray Class

template <typename T, qsizetype Prealloc = QVarLengthArrayDefaultPrealloc> class QVarLengthArray

Die Klasse QVarLengthArray bietet ein Low-Level-Array mit variabler Länge. Mehr...

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

Hinweis: Alle Funktionen in 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.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)

Detaillierte Beschreibung

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

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

Die Alternative ist, das Array auf dem Heap zu allozieren (mit new):

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

Wenn myfunc() jedoch sehr häufig aus der inneren Schleife der Anwendung aufgerufen wird, kann die Heap-Allokation eine große Quelle der Verlangsamung sein.

QVarLengthArray ist ein Versuch, diese Lücke in der Sprache C++ zu schließen. Es weist eine bestimmte Anzahl von Elementen auf dem Stack zu, und wenn Sie die Größe des Arrays auf eine größere Größe ändern, verwendet es stattdessen automatisch den Heap. Die Zuweisung auf dem Stack hat den Vorteil, dass sie viel schneller ist als die Zuweisung auf dem Heap.

Beispiel:

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

Im obigen Beispiel wird QVarLengthArray 1024 Elemente auf dem Stack vorallokieren und diese verwenden, es sei denn n + 1 ist größer als 1024. Wenn Sie das zweite Template-Argument weglassen, wird QVarLengthArray's Standardwert von 256 verwendet.

Der Wertetyp von QVarLengthArray muss ein zuweisbarer Datentyp sein. Dies deckt die meisten Datentypen ab, die üblicherweise verwendet werden, aber der Compiler lässt es nicht zu, dass Sie zum Beispiel QWidget als Wert speichern; speichern Sie stattdessen QWidget *.

QVarLengthArray bietet wie QList eine größenveränderbare Array-Datenstruktur. Die Hauptunterschiede zwischen den beiden Klassen sind:

  • Die API von QVarLengthArray ist viel einfacher und es fehlt ein Teil der Funktionalität von QList.
  • QVarLengthArray initialisiert den Speicher nicht, wenn der Wert ein Basistyp ist. (QList tut dies immer.)
  • QList verwendet implizites Teilen als Speicheroptimierung. QVarLengthArray bietet diese Funktion nicht, ist aber in der Regel aufgrund des geringeren Overheads etwas leistungsfähiger, besonders in engen Schleifen.

Zusammenfassend lässt sich sagen, dass QVarLengthArray eine Low-Level-Optimierungsklasse ist, die nur in sehr speziellen Fällen Sinn macht. Sie wird an einigen wenigen Stellen in Qt verwendet und wurde der öffentlichen API von Qt hinzugefügt, um fortgeschrittenen Benutzern die Arbeit zu erleichtern.

Siehe auch QList.

Dokumentation der Mitgliedstypen

[alias] QVarLengthArray::const_iterator

Typendefinition für const T *. Aus Gründen der STL-Kompatibilität bereitgestellt.

[alias] QVarLengthArray::const_pointer

Typendefinition für const T *. Aus Gründen der STL-Kompatibilität bereitgestellt.

[alias] QVarLengthArray::const_reference

Typendefinition für const T &. Aus Gründen der STL-Kompatibilität bereitgestellt.

[alias] QVarLengthArray::const_reverse_iterator

Typedef für std::reverse_iterator<const T*>. Wird für die STL-Kompatibilität bereitgestellt.

[alias] QVarLengthArray::difference_type

Typendefinition für ptrdiff_t. Aus Gründen der STL-Kompatibilität bereitgestellt.

[alias] QVarLengthArray::iterator

Typendefinition für T *. Aus Gründen der STL-Kompatibilität bereitgestellt.

[alias] QVarLengthArray::pointer

Typendefinition für T *. Aus Gründen der STL-Kompatibilität bereitgestellt.

[alias] QVarLengthArray::reference

Typendefinition für T &. Aus Gründen der STL-Kompatibilität bereitgestellt.

[alias] QVarLengthArray::reverse_iterator

Typedef für std::reverse_iterator<T*>. Wird für die STL-Kompatibilität bereitgestellt.

[alias] QVarLengthArray::size_type

Typendefinition für int. 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 der Mitgliedsfunktionen

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

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

Sie gibt die maximale Anzahl von Elementen zurück, die das Array theoretisch aufnehmen kann. In der Praxis kann die Anzahl viel kleiner sein, begrenzt durch die Menge an Speicher, die dem System zur Verfügung steht.

Diese Funktion wurde in Qt 6.8 eingeführt.

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. Wenn i gleich 0 ist, wird der Wert dem Vektor vorangestellt. Wenn i gleich size() ist, wird der Wert an den Vektor angehängt.

Bei großen Arrays kann dieser Vorgang langsam sein(lineare Zeit), da er erfordert, dass alle Elemente mit den Indizes i und darüber um eine Position weiter in den Speicher verschoben werden. Wenn Sie eine Containerklasse wünschen, die eine schnelle insert()-Funktion bietet, verwenden Sie stattdessen std::list.

Siehe auch 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)

Dies ist eine überladene Funktion.

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.

[noexcept] QVarLengthArray::QVarLengthArray()

Konstruiert ein Array mit einer Anfangsgröße von Null.

[explicit] QVarLengthArray::QVarLengthArray(qsizetype size)

Konstruiert ein Array mit einer Anfangsgröße von size Elementen.

Wenn der Wertetyp ein primitiver Typ (z.B. char, int, float) oder ein Zeigertyp (z.B. QWidget *) ist, werden die Elemente nicht initialisiert. Bei anderen Typen werden die Elemente mit einem standardmäßig konstruierten Wert initialisiert.

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

Konstruiert ein Array aus der durch args gegebenen std::initializer_list.

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

Konstruiert ein Array mit dem Inhalt im Iteratorbereich [first, last).

Dieser Konstruktor nimmt nur an der Überladungsauflösung teil, wenn InputIterator die Anforderungen eines LegacyInputIterators erfüllt.

Der Wertetyp von InputIterator muss nach T konvertierbar sein.

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

Konstruiert ein Array mit einer Anfangsgröße von size Elementen, das mit Kopien von v gefüllt ist.

Hinweis: Dieser Konstruktor ist nur verfügbar, wenn T kopierfähig ist.

Diese Funktion wurde in Qt 6.4 eingeführt.

Siehe auch size() und squeeze().

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

Konstruiert eine Kopie von other.

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

Move baut dieses Array variabler Länge aus other auf. 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> true ist.

QVarLengthArray::~QVarLengthArray()

Zerstört das Array.

void QVarLengthArray::append(const T &t)

Hängt das Element t an das Array an und erweitert das Array, falls erforderlich.

Siehe auch removeLast().

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

Hängt size Anzahl der Elemente, die von buf referenziert werden, an dieses Array an.

void QVarLengthArray::append(T &&t)

Diese Funktion überlädt append.

Hinweis: Anders als bei der lvalue-Ü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

[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 ist gleich der Anzahl der Elemente in list.

Diese Funktion weist nur dann Speicher zu, wenn die Anzahl der Elemente in list die Kapazität des Containers übersteigt.

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 ist gleich der Anzahl der Elemente im Bereich [first, last). Diese Funktion wird nur dann Speicher zuweisen, wenn die Anzahl der Elemente im Bereich die Kapazität des Containers übersteigt.

Diese Funktionsüberladung nimmt nur dann an der Überladungsauflösung teil, wenn InputIterator die Anforderungen eines LegacyInputIterators erfüllt.

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

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 ist gleich n. Diese Funktion weist nur dann Speicher zu, 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 einen Verweis 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()

Dasselbe wie last(). 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 im Array 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 in dem Array gespeichert werden können, ohne eine Neuzuweisung zu erzwingen.

Der einzige Zweck dieser Funktion ist es, eine Möglichkeit zur Feinabstimmung der Speichernutzung von QVarLengthArray zu bieten. Im Allgemeinen werden Sie diese Funktion nur selten aufrufen müssen. Wenn Sie wissen wollen, wie viele Elemente sich in dem Array befinden, rufen Sie size() auf.

Siehe auch reserve() und squeeze().

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

Gibt einen const STL-artigen Iterator zurück, der auf das erste Element im Array zeigt.

Siehe auch begin() und cend().

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

Gibt einen const STL-artigen Iterator 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.

Dasselbe wie resize(0).

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

Gibt einen const STL-artigen Iterator zurück, der auf das erste Element im Array zeigt.

Siehe auch begin() und constEnd().

const T *QVarLengthArray::constData() const

Gibt einen konstanten Zeiger auf die im Array gespeicherten Daten zurück. Der Zeiger kann für den Zugriff auf die Elemente im Array verwendet werden. Der Zeiger bleibt so lange gültig, wie 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 const STL-artigen Iterator 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 erfordert, dass der Wertetyp eine Implementierung von operator==() hat.

Siehe auch indexOf() und lastIndexOf().

qsizetype QVarLengthArray::count() const

Dasselbe wie size().

Siehe auch isEmpty() und resize().

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

Gibt einen Reverse-Iterator im Stil von const STL zurück, der auf das erste Element im Array variabler Länge in umgekehrter Reihenfolge zeigt.

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

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

Gibt einen const STL-artigen Reverse-Iterator zurück, der in umgekehrter Reihenfolge auf das letzte Element im Array mit variabler Länge zeigt.

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

T *QVarLengthArray::data()

Gibt einen Zeiger auf die im Array gespeicherten Daten zurück. Der Zeiger kann verwendet werden, um auf die Elemente im Array zuzugreifen und sie zu ändern.

Beispiel:

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

Der Zeiger bleibt so lange gültig, wie 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 args an seinen 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 an der Rückseite dieses QVarLengthArray ein und übergibt args an seinen 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.

Dasselbe wie isEmpty(). Wird für die 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 zeigt, aus dem Vektor und gibt einen Iterator zum nächsten Element im Vektor zurück (der end() sein kann).

Siehe auch insert() und remove().

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

Dies ist eine überladene Funktion.

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

T &QVarLengthArray::first()

Gibt einen Verweis auf das erste Element im Array zurück. Das Array darf nicht leer sein. Wenn das Array leer sein kann, prüfen Sie isEmpty(), bevor Sie diese Funktion aufrufen.

Siehe auch last() und isEmpty().

const T &QVarLengthArray::first() const

Dies ist eine überladene Funktion.

T &QVarLengthArray::front()

Dasselbe wie first(). 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 ab der Indexposition from vorwärts gesucht wird. Gibt -1 zurück, wenn kein Element übereinstimmt.

Diese Funktion erfordert, dass der Wertetyp eine Implementierung von operator==() hat.

Siehe auch lastIndexOf() und contains().

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

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

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

Dies ist eine überladene Funktion.

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

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 einen Verweis auf das letzte Element im Array zurück. Das Array darf nicht leer sein. Wenn das Array leer sein kann, prüfen Sie isEmpty(), bevor Sie diese Funktion aufrufen.

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 Wertes value im Array zurück, wobei ab der Indexposition from rückwärts gesucht wird. Ist from gleich -1 (Standardwert), beginnt die Suche beim letzten Element. Gibt -1 zurück, wenn kein Element übereinstimmt.

Diese Funktion erfordert, dass der Wertetyp eine Implementierung von operator==() hat.

Siehe auch indexOf() und contains().

qsizetype QVarLengthArray::length() const

Dasselbe wie size().

Siehe auch isEmpty() und resize().

void QVarLengthArray::pop_back()

Dasselbe wie removeLast(). Aus Gründen der STL-Kompatibilität bereitgestellt.

void QVarLengthArray::push_back(const T &t)

Hängt das Element t an das Array an und erweitert das Array, falls erforderlich. Wird für die STL-Kompatibilität bereitgestellt.

void QVarLengthArray::push_back(T &&t)

Diese Funktion ist eine Überladung von push_back.

Hinweis: Anders als bei der lvalue-Ü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

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

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

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)

Dies ist eine überladene Funktion.

Entfernt count Elemente aus der Mitte des Arrays, beginnend an der Indexposition i.

Siehe auch insert() und replace().

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

Entfernt alle Elemente, die gleich t sind, aus dem Array. Gibt die Anzahl der entfernten Elemente zurück, falls vorhanden.

Diese Funktion wurde in Qt 6.1 eingeführt.

Siehe auch removeOne().

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

Entfernt alle Elemente, für die das Prädikat pred den Wert true liefert, aus dem Array. Gibt die Anzahl der entfernten Elemente zurück, falls 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 nicht geändert.

Siehe auch append().

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

Entfernt das erste Element aus dem Array, das mit t übereinstimmt. Gibt zurück, ob ein Element tatsächlich 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 das letzte Element im Array 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, und wenn Sie resize() oft aufrufen, werden Sie wahrscheinlich eine bessere Leistung erzielen. Wenn size eine Unterschätzung ist, wird QVarLengthArray schlimmstenfalls etwas langsamer sein.

Der einzige Zweck dieser Funktion ist es, eine Möglichkeit zur Feinabstimmung der Speichernutzung von QVarLengthArray zu bieten. Im Allgemeinen werden Sie diese Funktion nur selten aufrufen müssen. Wenn Sie die Größe des Arrays ändern wollen, rufen Sie resize() auf.

Siehe auch capacity() und squeeze().

void QVarLengthArray::resize(qsizetype size)

Setzt die Größe des Arrays auf size. Wenn size größer als die aktuelle Größe ist, werden Elemente am Ende hinzugefügt. Wenn size kleiner als die aktuelle Größe ist, werden Elemente vom Ende entfernt.

Wenn der Wertetyp ein primitiver Typ (z. B. char, int, float) oder ein Zeigertyp (z. B. QWidget *) ist, werden neue Elemente nicht initialisiert. Bei anderen Typen werden die Elemente mit einem standardmäßig konstruierten Wert initialisiert.

Siehe auch size() und squeeze().

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

Setzt die Größe des Arrays auf size. Wenn size größer als die aktuelle Größe ist, werden Kopien von v am Ende hinzugefügt. Wenn size kleiner als die aktuelle Größe ist, werden Elemente vom Ende entfernt.

Hinweis: Diese Funktion ist nur verfügbar, wenn T kopierfähig ist.

Diese Funktion wurde in Qt 6.4 eingeführt.

Siehe auch size() und squeeze().

void QVarLengthArray::shrink_to_fit()

Dasselbe wie squeeze(). 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 für die Speicherung der Elemente nicht benötigt wird. Wenn der Container seinen Speicherplatz auf dem Stack belegen kann, gibt er die Heap-Zuweisung frei und kopiert die Elemente zurück auf den Stack.

Der einzige Zweck dieser Funktion ist es, eine Möglichkeit zur Feinabstimmung der Speichernutzung von QVarLengthArray zu bieten. Im Allgemeinen werden Sie diese Funktion nur selten aufrufen müssen.

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

T QVarLengthArray::value(qsizetype i) const

Gibt den Wert an der Indexposition i zurück.

Wenn der Index i außerhalb des zulässigen Bereichs liegt, gibt die Funktion einen standardmäßig konstruierten Wert zurück. Wenn Sie sicher sind, dass i innerhalb der Grenzen 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

Dies ist eine überladene Funktion.

Wenn der Index i außerhalb der Grenzen liegt, gibt die Funktion defaultValue zurück.

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

Hängt value an das Array an und gibt einen Verweis 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)

Hängt value an das Array an und gibt einen Verweis 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)

Move ordnet other diesem Array zu und gibt einen Verweis 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> true ist.

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

Weist other diesem Array zu und gibt einen Verweis 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 einen Verweis auf dieses Array zurück.

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

Gibt einen Verweis 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, die gleich t sind, aus dem Array array. Gibt die Anzahl der entfernten Elemente zurück, falls vorhanden.

Hinweis: t darf kein Verweis auf ein Element innerhalb von array sein. Wenn Sie nicht sicher sein können, dass dies nicht der Fall ist, nehmen 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 liefert, aus der Liste array. Gibt die Anzahl der entfernten Elemente zurück, falls vorhanden.

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.

Hinweis: Diese Funktion ist noexcept, wenn QtPrivate::QNothrowHashable_v<T> 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 Felder, die durch left und right angegeben sind, nicht gleich sind.

Zwei Arrays werden als gleich angesehen, wenn sie die gleichen Werte in der gleichen Reihenfolge enthalten.

Diese Funktion setzt voraus, dass der Wertetyp eine Implementierung von operator==() hat.

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.

Diese Funktion setzt voraus, dass der Wertetyp eine Implementierung von operator<() hat.

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 oder gleich rhs ist; andernfalls wird false zurückgegeben.

Diese Funktion erfordert, dass der Wertetyp eine Implementierung von operator<() hat.

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.

Zwei Arrays werden als gleich angesehen, wenn sie die gleichen Werte in der gleichen Reihenfolge enthalten.

Diese Funktion setzt voraus, dass der Wertetyp eine Implementierung von operator==() hat.

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.

Diese Funktion setzt voraus, dass der Wertetyp eine Implementierung von operator<() hat.

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.

Diese Funktion erfordert, dass der Wertetyp eine Implementierung von operator<() hat.

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