Auf dieser Seite

QSet::iterator Class

class QSet::iterator

Die Klasse „ QSet::iterator “ stellt einen nicht-konstanten Iterator im STL-Stil für „ QSet “ bereit. Mehr...

Öffentliche Typen

Öffentliche Funktionen

iterator()
iterator(const QSet<T>::iterator &other)
bool operator!=(const QSet<T>::iterator &other) const
bool operator!=(const QSet<T>::const_iterator &other) const
const T &operator*() const
QSet<T>::iterator &operator++()
QSet<T>::iterator operator++(int)
const T *operator->() const
QSet<T>::iterator &operator=(const QSet<T>::iterator &other)
bool operator==(const QSet<T>::iterator &other) const
bool operator==(const QSet<T>::const_iterator &other) const

Ausführliche Beschreibung

QSet bietet sowohl Iteratoren im STL-Stil als auch Iteratoren im Java-Stil. Die Iteratoren im STL-Stil sind eher auf niedrigerer Ebene angesiedelt und umständlicher in der Anwendung; andererseits sind sie etwas schneller und bieten Entwicklern, die bereits mit STL vertraut sind, den Vorteil der Vertrautheit.

QSetMit <T>::iterator können Sie über eine ` QSet ` iterieren und dabei Elemente entfernen (mithilfe von ` QSet::erase()`). (Mit `QSet ` können Sie einen Wert nicht über einen Iterator ändern, da dies möglicherweise erfordern würde, den Wert in der internen Hash-Tabelle zu verschieben, die von ` QSet` verwendet wird.) Wenn Sie eine Iteration über ein `const QSet` durchführen möchten, sollten Sie ` QSet::const_iterator` verwenden. Es ist generell empfehlenswert, auch bei einem nicht-konstanten ` QSet ` ` QSet::const_iterator ` zu verwenden, es sei denn, Sie müssen den ` QSet ` über den Iterator ändern. Konstante Iteratoren sind etwas schneller und können die Lesbarkeit des Codes verbessern.

Der Standardkonstruktor QSet::iterator erstellt einen nicht initialisierten Iterator. Sie müssen ihn mit einer Funktion wie QSet::begin(), QSet::end() oder QSet::insert() initialisieren, bevor Sie mit der Iteration beginnen können. Hier ist eine typische Schleife, die alle in einem Set gespeicherten Elemente ausgibt:

QSet<QString> set = {"Januar", "Februar", /*...*/ "Dezember"};

// i ist ein QSet<QString>::iterator
for (auto i = set.begin(), end = set.end(); i != end;++i)
    qDebug() << *i;

Hier ist eine Schleife, die bestimmte Elemente (alle, die mit „J“ beginnen) während der Iteration aus einer Menge entfernt:

QSet<QString> set = {"January", "February", /*...*/ "December"};

auto i = set.begin();
while (i != set.end()) {
    if ((*i).startsWith('J')) {
        i = set.erase(i);
    } else {
        ++i;
    }
}

Iteratoren im STL-Stil können als Argumente für ` generic algorithms` verwendet werden. Hier ist beispielsweise gezeigt, wie man mit dem `qFind()`-Algorithmus ein Element in der Menge findet:

QSet<QString> set;
//...
const auto predicate = [](const QString &s) { return s.compare("Jeanette", Qt::CaseInsensitive) == 0; };
QSet<QString>::iterator it = std::find_if(set.begin(), set.end(), predicate);
if (it != set.end())
    cout << "Found Jeanette" << endl;

Es können mehrere Iteratoren für dieselbe Menge verwendet werden.

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. Weitere Informationen finden Sie unter „Problem mit Iteratoren bei impliziter gemeinsamen Nutzung“.

Siehe auch „ QSet::const_iterator “ und „ QMutableSetIterator “.

Dokumentation zu Mitgliedstypen

iterator::iterator_category

Synonyme für „std::bidirectional_iterator_tag“, die darauf hinweisen, dass es sich bei diesen Iteratoren um bidirektionale Iteratoren handelt.

Dokumentation zu den Member-Funktionen

iterator::iterator()

Erstellt einen nicht initialisierten Iterator.

Funktionen wie operator*() und operator++() sollten nicht auf einem nicht initialisierten Iterator aufgerufen werden. Verwenden Sie operator=(), um ihm vor der Verwendung einen Wert zuzuweisen.

Siehe auch ` QSet::begin()` und ` QSet::end()`.

iterator::iterator(const QSet<T>::iterator &other)

Erstellt eine Kopie von other.

bool iterator::operator!=(const QSet<T>::iterator &other) const

Gibt „ true “ zurück, wenn „ other “ auf ein anderes Element als diesen Iterator verweist; andernfalls wird „ false “ zurückgegeben.

Siehe auch operator==().

bool iterator::operator!=(const QSet<T>::const_iterator &other) const

bool iterator::operator==(const QSet<T>::const_iterator &other) const

const T &iterator::operator*() const

Gibt eine Referenz auf das aktuelle Element zurück.

Siehe auch „ operator->()“.

QSet<T>::iterator &iterator::operator++()

Der Präfix-Operator ++ (++it) verschiebt den Iterator zum nächsten Element in der Menge und gibt einen Iterator auf das neue aktuelle Element zurück.

Der Aufruf dieser Funktion für ` QSet<T>::constEnd()` führt zu undefinierten Ergebnissen.

QSet<T>::iterator iterator::operator++(int)

Der Postfix-Operator „++“ (it++) springt mit dem Iterator zum nächsten Element der Menge und gibt einen Iterator auf das zuvor aktuelle Element zurück.

const T *iterator::operator->() const

Gibt einen Zeiger auf das aktuelle Element zurück.

Siehe auch „ operator*()“.

QSet<T>::iterator &iterator::operator=(const QSet<T>::iterator &other)

Weist diesem Iterator „ other “ zu.

bool iterator::operator==(const QSet<T>::iterator &other) const

Gibt „ true “ zurück, wenn „ other “ auf dasselbe Element wie dieser Iterator verweist; andernfalls wird „ false “ zurückgegeben.

Siehe auch operator!=().

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.