QLinkedList Class
template <typename T> class QLinkedListDie Klasse QLinkedList ist eine Vorlagenklasse, die verknüpfte Listen bereitstellt. Mehr...
Kopfzeile: | #include <QLinkedList> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Core5Compat) target_link_libraries(mytarget PRIVATE Qt6::Core5Compat) |
qmake: | QT += core5compat |
- Liste aller Mitglieder, einschließlich geerbter Mitglieder
- QLinkedList ist Teil von Implicitly Shared Classes.
Hinweis: Alle Funktionen in dieser Klasse sind reentrant.
Öffentliche Typen
class | const_iterator |
class | iterator |
ConstIterator | |
Iterator | |
const_pointer | |
const_reference | |
const_reverse_iterator | |
difference_type | |
pointer | |
reference | |
reverse_iterator | |
size_type | |
value_type |
Öffentliche Funktionen
QLinkedList() | |
QLinkedList(std::initializer_list<T> list) | |
QLinkedList(InputIterator first, InputIterator last) | |
QLinkedList(const QLinkedList<T> &other) | |
QLinkedList(QLinkedList<T> &&other) | |
~QLinkedList() | |
void | append(const T &value) |
T & | back() |
const T & | back() const |
QLinkedList<T>::iterator | begin() |
QLinkedList<T>::const_iterator | begin() const |
QLinkedList<T>::const_iterator | cbegin() const |
QLinkedList<T>::const_iterator | cend() const |
void | clear() |
QLinkedList<T>::const_iterator | constBegin() const |
QLinkedList<T>::const_iterator | constEnd() const |
bool | contains(const T &value) const |
int | count() const |
int | count(const T &value) const |
QLinkedList<T>::const_reverse_iterator | crbegin() const |
QLinkedList<T>::const_reverse_iterator | crend() const |
bool | empty() const |
QLinkedList<T>::iterator | end() |
QLinkedList<T>::const_iterator | end() const |
bool | endsWith(const T &value) const |
QLinkedList<T>::iterator | erase(QLinkedList<T>::iterator pos) |
QLinkedList<T>::iterator | erase(QLinkedList<T>::iterator begin, QLinkedList<T>::iterator end) |
T & | first() |
const T & | first() const |
T & | front() |
const T & | front() const |
QLinkedList<T>::iterator | insert(QLinkedList<T>::iterator before, const T &value) |
bool | isEmpty() const |
T & | last() |
const T & | last() const |
void | pop_back() |
void | pop_front() |
void | prepend(const T &value) |
void | push_back(const T &value) |
void | push_front(const T &value) |
QLinkedList<T>::reverse_iterator | rbegin() |
QLinkedList<T>::const_reverse_iterator | rbegin() const |
int | removeAll(const T &value) |
void | removeFirst() |
void | removeLast() |
bool | removeOne(const T &value) |
QLinkedList<T>::reverse_iterator | rend() |
QLinkedList<T>::const_reverse_iterator | rend() const |
int | size() const |
bool | startsWith(const T &value) const |
void | swap(QLinkedList<T> &other) |
T | takeFirst() |
T | takeLast() |
std::list<T> | toStdList() const |
bool | operator!=(const QLinkedList<T> &other) const |
QLinkedList<T> | operator+(const QLinkedList<T> &other) const |
QLinkedList<T> & | operator+=(const QLinkedList<T> &other) |
QLinkedList<T> & | operator+=(const T &value) |
QLinkedList<T> & | operator<<(const QLinkedList<T> &other) |
QLinkedList<T> & | operator<<(const T &value) |
QLinkedList<T> & | operator=(const QLinkedList<T> &other) |
bool | operator==(const QLinkedList<T> &other) const |
Statische öffentliche Mitglieder
QLinkedList<T> | fromStdList(const std::list<T> &list) |
Verwandte Nicht-Mitglieder
QDataStreamIfHasOStreamOperatorsContainer<QLinkedList<T>, T> | operator<<(QDataStream &out, const QLinkedList<T> &list) |
QDataStreamIfHasIStreamOperatorsContainer<QLinkedList<T>, T> | operator>>(QDataStream &in, QLinkedList<T> &list) |
Detaillierte Beschreibung
QLinkedList<T> ist eine der generischen Container-Klassen von Qt. Sie speichert eine Liste von Werten und bietet Iterator-basierten Zugriff sowie Einfügen und Entfernen in konstanter Zeit.
QList<T> und QLinkedList<T> bieten ähnliche Funktionalität. Hier ist ein Überblick:
- Für die meisten Zwecke ist die Klasse QList die richtige Wahl. Ihre indexbasierte API ist bequemer als die iteratorbasierte API von QLinkedList. Ihre Elemente belegen benachbarte Speicherpositionen. Außerdem benötigt sie weniger Code in Ihrer ausführbaren Datei.
- Wenn Sie eine echte verknüpfte Liste benötigen, mit Garantien für Einfügungen in der Mitte der Liste zu konstanter Zeit und Iteratoren für Elemente anstelle von Indizes, verwenden Sie QLinkedList.
Hier ist ein Beispiel für eine QLinkedList, die ganze Zahlen speichert, und eine QLinkedList, die QTime Werte speichert:
QLinkedList<int> integerList; QLinkedList<QTime> timeList;
QLinkedList speichert eine Liste von Elementen. Der Standardkonstruktor erzeugt eine leere Liste. Um Elemente in die Liste einzufügen, können Sie den Operator<<() verwenden:
QLinkedList<QString> list; list << "one" << "two" << "three"; // list: ["one", "two", "three"]
Wenn Sie das erste oder letzte Element in einer verknüpften Liste erhalten möchten, verwenden Sie first() oder last(). Wenn Sie ein Element von einem der beiden Enden der Liste entfernen wollen, verwenden Sie removeFirst() oder removeLast(). Wenn Sie alle Vorkommen eines bestimmten Wertes in der Liste entfernen wollen, verwenden Sie removeAll().
Eine häufige Anforderung ist, das erste oder letzte Element in der Liste zu entfernen und etwas damit zu tun. Hierfür bietet QLinkedList takeFirst() und takeLast(). Hier ist eine Schleife, die ein Element nach dem anderen aus einer Liste entfernt und delete
aufruft:
QLinkedList<QWidget *> list; ... while (!list.isEmpty()) delete list.takeFirst();
Der Wertetyp von QLinkedList muss ein zuweisbarer Datentyp sein. Dies deckt die meisten gebräuchlichen Datentypen ab, aber der Compiler lässt es nicht zu, dass Sie z.B. ein QWidget als Wert speichern; speichern Sie stattdessen ein QWidget *. Einige wenige Funktionen haben zusätzliche Anforderungen; zum Beispiel erwarten contains() und removeAll(), dass der Wertetyp operator==()
unterstützt. Diese Anforderungen sind für jede Funktion einzeln dokumentiert.
Wenn Sie Elemente in der Mitte der Liste einfügen, ändern oder entfernen möchten, müssen Sie einen Iterator verwenden. QLinkedList bietet sowohl Iteratoren im Java-Stil (QLinkedListIterator und QMutableLinkedListIterator) als auch Iteratoren im STL-Stil (QLinkedList::const_iterator und QLinkedList::iterator). Details finden Sie in der Dokumentation zu diesen Klassen.
Siehe auch QLinkedListIterator, QMutableLinkedListIterator, und QList.
Dokumentation der Mitgliedstypen
QLinkedList::ConstIterator
Qt-style ist ein Synonym für QLinkedList::const_iterator.
QLinkedList::Iterator
Qt-style ist ein Synonym für QLinkedList::iterator.
QLinkedList::const_pointer
Typendefinition für const T *. Aus Gründen der STL-Kompatibilität bereitgestellt.
QLinkedList::const_reference
Typendefinition für const T &. Aus Gründen der STL-Kompatibilität bereitgestellt.
QLinkedList::const_reverse_iterator
Der QLinkedList::const_reverse_iterator typedef bietet einen STL-ähnlichen const reverse iterator für QLinkedList.
Es ist einfach ein Typedef für std::reverse_iterator<QLinkedList::const_iterator>
.
Warnung: Iteratoren auf implizit gemeinsam genutzten Containern funktionieren nicht genau wie STL-Iteratoren. Sie sollten es vermeiden, einen Container zu kopieren, während Iteratoren auf diesem Container aktiv sind. Für weitere Informationen lesen Sie Implizite gemeinsame Nutzung Iterator Problem.
Siehe auch QLinkedList::rbegin(), QLinkedList::rend(), QLinkedList::reverse_iterator, und QLinkedList::const_iterator.
QLinkedList::difference_type
Typendefinition für ptrdiff_t. Aus Gründen der STL-Kompatibilität bereitgestellt.
QLinkedList::pointer
Typendefinition für T *. Aus Gründen der STL-Kompatibilität bereitgestellt.
QLinkedList::reference
Typendefinition für T &. Aus Gründen der STL-Kompatibilität bereitgestellt.
QLinkedList::reverse_iterator
Das QLinkedList::reverse_iterator typedef bietet einen STL-ähnlichen non-const reverse iterator für QLinkedList.
Es ist einfach ein Typedef für std::reverse_iterator<QLinkedList::iterator>
.
Warnung: Iteratoren auf implizit gemeinsam genutzten Containern funktionieren nicht genau wie STL-Iteratoren. Sie sollten es vermeiden, einen Container zu kopieren, während Iteratoren auf diesem Container aktiv sind. Für weitere Informationen lesen Sie Implizite gemeinsame Nutzung Iterator Problem.
Siehe auch QLinkedList::rbegin(), QLinkedList::rend(), QLinkedList::const_reverse_iterator, und QLinkedList::iterator.
QLinkedList::size_type
Typendefinition für int. Aus Gründen der STL-Kompatibilität bereitgestellt.
QLinkedList::value_type
Typedef für T. Wird aus Gründen der STL-Kompatibilität bereitgestellt.
Dokumentation der Mitgliedsfunktionen
[noexcept]
QLinkedList::QLinkedList()
Konstruiert eine leere Liste.
QLinkedList::QLinkedList(std::initializer_list<T> list)
Konstruiert eine Liste aus der durch list angegebenen std::initializer_list.
Dieser Konstruktor ist nur aktiviert, wenn der Compiler C++11-Initialisierungslisten unterstützt.
template <typename InputIterator, QtPrivate::IfIsInputIterator<InputIterator> = true> QLinkedList::QLinkedList(InputIterator first, InputIterator last)
Konstruiert eine Liste mit dem Inhalt im Iteratorbereich [first, last).
Der Wertetyp von InputIterator
muss nach T
konvertierbar sein.
QLinkedList::QLinkedList(const QLinkedList<T> &other)
Konstruiert eine Kopie von other.
Dieser Vorgang erfolgt in konstanter Zeit, da QLinkedList implizit gemeinsam genutzt wird. Dies macht die Rückgabe einer QLinkedList aus einer Funktion sehr schnell. Wenn eine gemeinsam genutzte Instanz geändert wird, wird sie kopiert (copy-on-write), was lineare Zeit benötigt.
Siehe auch operator=().
[noexcept]
QLinkedList::QLinkedList(QLinkedList<T> &&other)
Move-konstruiert eine QLinkedList-Instanz, die auf das gleiche Objekt zeigt, auf das other gezeigt hat.
QLinkedList::~QLinkedList()
Zerstört die Liste. Verweise auf die Werte in der Liste und alle Iteratoren über diese Liste werden ungültig.
void QLinkedList::append(const T &value)
Fügt value am Ende der Liste ein.
Beispiel:
QLinkedList<QString> list; list.append("one"); list.append("two"); list.append("three"); // list: ["one", "two", "three"]
Dies ist dasselbe wie list.insert(end(), value).
Siehe auch operator<<(), prepend(), und insert().
T &QLinkedList::back()
Diese Funktion ist aus Gründen der STL-Kompatibilität vorgesehen. Sie ist äquivalent zu last().
const T &QLinkedList::back() const
Dies ist eine überladene Funktion.
QLinkedList<T>::iterator QLinkedList::begin()
Gibt einen Iterator im STL-Stil zurück, der auf das erste Element in der Liste zeigt.
Siehe auch constBegin() und end().
[noexcept]
QLinkedList<T>::const_iterator QLinkedList::begin() const
Dies ist eine überladene Funktion.
[noexcept]
QLinkedList<T>::const_iterator QLinkedList::cbegin() const
Gibt einen Iterator im Stil von const STL zurück, der auf das erste Element der Liste zeigt.
Siehe auch begin() und cend().
[noexcept]
QLinkedList<T>::const_iterator QLinkedList::cend() const
Gibt einen const STL-artigen Iterator zurück, der auf das imaginäre Element nach dem letzten Element in der Liste zeigt.
Siehe auch cbegin() und end().
void QLinkedList::clear()
Entfernt alle Einträge aus der Liste.
Siehe auch removeAll().
[noexcept]
QLinkedList<T>::const_iterator QLinkedList::constBegin() const
Gibt einen Iterator im Stil von const STL zurück, der auf das erste Element der Liste zeigt.
Siehe auch begin() und constEnd().
[noexcept]
QLinkedList<T>::const_iterator QLinkedList::constEnd() const
Gibt einen const STL-artigen Iterator zurück, der auf das imaginäre Element nach dem letzten Element in der Liste zeigt.
Siehe auch constBegin() und end().
bool QLinkedList::contains(const T &value) const
Gibt true
zurück, wenn die Liste ein Vorkommen von value enthält; andernfalls wird false
zurückgegeben.
Diese Funktion setzt voraus, dass der Wertetyp eine Implementierung von operator==()
hat.
Siehe auch QLinkedListIterator::findNext() und QLinkedListIterator::findPrevious().
int QLinkedList::count() const
Dasselbe wie size().
int QLinkedList::count(const T &value) const
Gibt die Anzahl der Vorkommen von value in der Liste zurück.
Für diese Funktion muss der Wertetyp eine Implementierung von operator==()
haben.
Siehe auch contains().
[noexcept]
QLinkedList<T>::const_reverse_iterator QLinkedList::crbegin() const
Gibt einen Reverse-Iterator im Stil von const STL zurück, der auf das erste Element der Liste in umgekehrter Reihenfolge zeigt.
Siehe auch begin(), rbegin(), und rend().
[noexcept]
QLinkedList<T>::const_reverse_iterator QLinkedList::crend() const
Gibt einen const STL-ähnlichen Reverse-Iterator zurück, der in umgekehrter Reihenfolge auf ein Element hinter dem letzten Element in der Liste zeigt.
Siehe auch end(), rend(), und rbegin().
bool QLinkedList::empty() const
Diese Funktion ist aus Gründen der STL-Kompatibilität vorgesehen. Sie ist äquivalent zu isEmpty() und gibt true
zurück, wenn die Liste leer ist.
QLinkedList<T>::iterator QLinkedList::end()
Gibt einen Iterator im STL-Stil zurück, der auf das imaginäre Element nach dem letzten Element in der Liste zeigt.
Siehe auch begin() und constEnd().
[noexcept]
QLinkedList<T>::const_iterator QLinkedList::end() const
Dies ist eine überladene Funktion.
bool QLinkedList::endsWith(const T &value) const
Gibt true
zurück, wenn die Liste nicht leer ist und ihr letzter Eintrag gleich value ist; andernfalls wird false
zurückgegeben.
Siehe auch isEmpty() und last().
QLinkedList<T>::iterator QLinkedList::erase(QLinkedList<T>::iterator pos)
Entfernt das Element, auf das der Iterator pos zeigt, aus der Liste und gibt einen Iterator zum nächsten Element in der Liste zurück (der end() sein kann).
Siehe auch insert().
QLinkedList<T>::iterator QLinkedList::erase(QLinkedList<T>::iterator begin, QLinkedList<T>::iterator end)
Dies ist eine überladene Funktion.
Entfernt alle Elemente von begin bis zu (aber nicht einschließlich) end.
T &QLinkedList::first()
Gibt einen Verweis auf den ersten Eintrag in der Liste zurück. Diese Funktion geht davon aus, dass die Liste nicht leer ist.
Siehe auch last() und isEmpty().
const T &QLinkedList::first() const
Dies ist eine überladene Funktion.
[static]
QLinkedList<T> QLinkedList::fromStdList(const std::list<T> &list)
Gibt ein QLinkedList Objekt mit den in list enthaltenen Daten zurück. Die Reihenfolge der Elemente in QLinkedList ist die gleiche wie in list.
Beispiel:
std::list<double> stdlist; list.push_back(1.2); list.push_back(0.5); list.push_back(3.14); QLinkedList<double> list = QLinkedList<double>::fromStdList(stdlist);
Siehe auch toStdList().
T &QLinkedList::front()
Diese Funktion ist aus Gründen der STL-Kompatibilität vorgesehen. Sie ist äquivalent zu first().
const T &QLinkedList::front() const
Dies ist eine überladene Funktion.
QLinkedList<T>::iterator QLinkedList::insert(QLinkedList<T>::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.
Siehe auch erase().
bool QLinkedList::isEmpty() const
Gibt true
zurück, wenn die Liste keine Elemente enthält; andernfalls wird false zurückgegeben.
Siehe auch size().
T &QLinkedList::last()
Gibt einen Verweis auf den letzten Eintrag in der Liste zurück. Diese Funktion geht davon aus, dass die Liste nicht leer ist.
Siehe auch first() und isEmpty().
const T &QLinkedList::last() const
Dies ist eine überladene Funktion.
void QLinkedList::pop_back()
Diese Funktion ist aus Gründen der STL-Kompatibilität vorgesehen. Sie ist äquivalent zu removeLast().
void QLinkedList::pop_front()
Diese Funktion ist aus Gründen der STL-Kompatibilität vorgesehen. Sie ist äquivalent zu removeFirst().
void QLinkedList::prepend(const T &value)
Fügt value am Anfang der Liste ein.
Beispiel:
QLinkedList<QString> list; list.prepend("one"); list.prepend("two"); list.prepend("three"); // list: ["three", "two", "one"]
Dies ist dasselbe wie list.insert(begin(), value).
Siehe auch append() und insert().
void QLinkedList::push_back(const T &value)
Diese Funktion ist aus Gründen der STL-Kompatibilität vorgesehen. Sie ist äquivalent zu append(value).
void QLinkedList::push_front(const T &value)
Diese Funktion ist aus Gründen der STL-Kompatibilität vorgesehen. Sie ist äquivalent zu prepend(value).
QLinkedList<T>::reverse_iterator QLinkedList::rbegin()
Gibt einen umgekehrten Iterator im STL-Stil zurück, der auf das erste Element in der Liste in umgekehrter Reihenfolge zeigt.
Siehe auch begin(), crbegin(), und rend().
[noexcept]
QLinkedList<T>::const_reverse_iterator QLinkedList::rbegin() const
Dies ist eine überladene Funktion.
int QLinkedList::removeAll(const T &value)
Entfernt alle Vorkommen von value in der Liste.
Beispiel:
QList<QString> list; list << "sun" << "cloud" << "sun" << "rain"; list.removeAll("sun"); // list: ["cloud", "rain"]
Für diese Funktion muss der Wertetyp eine Implementierung von operator==()
haben.
Siehe auch insert().
void QLinkedList::removeFirst()
Entfernt den ersten Eintrag in der Liste.
Dies ist dasselbe wie erase(begin()).
Siehe auch removeLast() und erase().
void QLinkedList::removeLast()
Entfernt den letzten Eintrag in der Liste.
Siehe auch removeFirst() und erase().
bool QLinkedList::removeOne(const T &value)
Entfernt die ersten Vorkommen von value in der Liste. Gibt bei Erfolg true
zurück, andernfalls false
.
Beispiel:
QList<QString> list; list << "sun" << "cloud" << "sun" << "rain"; list.removeOne("sun"); // list: ["cloud", "sun", "rain"]
Für diese Funktion muss der Wertetyp eine Implementierung von operator==()
haben.
Siehe auch insert().
QLinkedList<T>::reverse_iterator QLinkedList::rend()
Gibt einen umgekehrten Iterator im STL-Stil zurück, der in umgekehrter Reihenfolge auf ein Element hinter dem letzten Element in der Liste zeigt.
Siehe auch end(), crend(), und rbegin().
[noexcept]
QLinkedList<T>::const_reverse_iterator QLinkedList::rend() const
Dies ist eine überladene Funktion.
int QLinkedList::size() const
Gibt die Anzahl der Elemente in der Liste zurück.
Siehe auch isEmpty() und count().
bool QLinkedList::startsWith(const T &value) const
Gibt true
zurück, wenn die Liste nicht leer ist und ihr erstes Element gleich value ist; andernfalls wird false
zurückgegeben.
Siehe auch isEmpty() und first().
[noexcept]
void QLinkedList::swap(QLinkedList<T> &other)
Tauscht die Liste other mit dieser Liste aus. Dieser Vorgang ist sehr schnell und schlägt nie fehl.
T QLinkedList::takeFirst()
Entfernt das erste Element in der Liste und gibt es zurück.
Wenn Sie den Rückgabewert nicht verwenden, ist removeFirst() effizienter.
Siehe auch takeLast() und removeFirst().
T QLinkedList::takeLast()
Entfernt das letzte Element in der Liste und gibt es zurück.
Wenn Sie den Rückgabewert nicht verwenden, ist removeLast() effizienter.
Siehe auch takeFirst() und removeLast().
std::list<T> QLinkedList::toStdList() const
Gibt ein std::list-Objekt mit den in diesem QLinkedList enthaltenen Daten zurück. Beispiel:
QLinkedList<double> list; list << 1.2 << 0.5 << 3.14; std::list<double> stdlist = list.toStdList();
Siehe auch fromStdList().
bool QLinkedList::operator!=(const QLinkedList<T> &other) const
Gibt true
zurück, wenn other nicht gleich dieser Liste ist; andernfalls wird false
zurückgegeben.
Zwei Listen werden als gleich angesehen, wenn sie die gleichen Werte in der gleichen Reihenfolge enthalten.
Für diese Funktion muss der Wertetyp operator==()
implementiert sein.
Siehe auch operator==().
QLinkedList<T> QLinkedList::operator+(const QLinkedList<T> &other) const
Gibt eine Liste zurück, die alle Elemente in dieser Liste enthält, gefolgt von allen Elementen in der Liste other.
Siehe auch operator+=().
QLinkedList<T> &QLinkedList::operator+=(const QLinkedList<T> &other)
Hängt die Elemente der Liste other an diese Liste an und gibt einen Verweis auf diese Liste zurück.
Siehe auch operator+() und append().
QLinkedList<T> &QLinkedList::operator+=(const T &value)
Dies ist eine überladene Funktion.
Hängt value an die Liste an.
QLinkedList<T> &QLinkedList::operator<<(const QLinkedList<T> &other)
Hängt die Elemente der Liste other an diese Liste an und gibt einen Verweis auf diese Liste zurück.
Siehe auch operator+=() und append().
QLinkedList<T> &QLinkedList::operator<<(const T &value)
Dies ist eine überladene Funktion.
Hängt value an die Liste an.
QLinkedList<T> &QLinkedList::operator=(const QLinkedList<T> &other)
Weist other dieser Liste zu und gibt einen Verweis auf diese Liste zurück.
bool QLinkedList::operator==(const QLinkedList<T> &other) const
Gibt true
zurück, wenn other mit dieser Liste übereinstimmt; andernfalls wird false zurückgegeben.
Zwei Listen werden als gleich angesehen, wenn sie die gleichen Werte in der gleichen Reihenfolge enthalten.
Für diese Funktion muss der Wertetyp operator==()
implementiert sein.
Siehe auch operator!=().
Verwandte Nicht-Mitglieder
template <typename T> QDataStreamIfHasOStreamOperatorsContainer<QLinkedList<T>, T> operator<<(QDataStream &out, const QLinkedList<T> &list)
Schreibt die verknüpfte Liste list in den Stream out.
Für diese Funktion muss der Wertetyp operator<<()
implementiert werden.
Siehe auch Format der QDataStream-Operatoren.
template <typename T> QDataStreamIfHasIStreamOperatorsContainer<QLinkedList<T>, T> operator>>(QDataStream &in, QLinkedList<T> &list)
Liest eine verknüpfte Liste aus Stream in in list.
Für diese Funktion muss der Wertetyp operator>>()
implementiert sein.
Siehe auch Format der QDataStream-Operatoren.
© 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.