QVarLengthArray Class
template <typename T, qsizetype Prealloc = QVarLengthArrayDefaultPrealloc> class QVarLengthArrayDie 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
const_iterator | |
const_pointer | |
const_reference | |
const_reverse_iterator | |
difference_type | |
iterator | |
pointer | |
reference | |
reverse_iterator | |
size_type | |
value_type |
Ö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() |
Verwandte Nicht-Mitglieder
(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()).
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.